2023-10-03 10:14:54 -07:00

454 lines
17 KiB
C#

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using Dapper;
using Fab2ApprovalSystem.Models;
using System.Text;
using Fab2ApprovalSystem.Misc;
namespace Fab2ApprovalSystem.DMO
{
public class TrainingDMO
{
private IDbConnection db = new SqlConnection(GlobalVars.DB_CONNECTION_STRING);
private static FabApprovalTrainingEntities FabApprovalDB = new FabApprovalTrainingEntities();
public int Create(int issueId)
{
var parameters = new DynamicParameters();
parameters = new DynamicParameters();
parameters.Add("@TrainingId", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
parameters.Add("@ECNNumber", issueId);
this.db.Execute("InsertTrainingItem", parameters, commandType: CommandType.StoredProcedure);
int trainingId = parameters.Get<int>("@TrainingId");
return trainingId;
}
public int CreateAssignment(int trainingId, int userId)
{
var parameters = new DynamicParameters();
parameters = new DynamicParameters();
//parameters.Add("@TrainingId", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
parameters.Add("@TrainingID", trainingId);
parameters.Add("@UserID", userId);
parameters.Add("@AssignmentID", dbType: DbType.Int32, direction: ParameterDirection.InputOutput);
this.db.Execute("InsertTrainingAssignment", parameters, commandType: CommandType.StoredProcedure);
int assignmentId = parameters.Get<int>("@AssignmentID");
return assignmentId;
}
public IEnumerable<Training> GetAllTrainings()
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
IEnumerable<Training> allTrainings = (from a in db.Trainings select a).ToList();
return allTrainings;
}
public Training GetTraining(int trainingId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
Training trainingRecord = new Training();
trainingRecord = (from a in db.Trainings where a.TrainingID == trainingId select a).FirstOrDefault();
return trainingRecord;
}
public TrainingAssignment GetAssignment(int assignmentId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
TrainingAssignment assignmentRecord = (from a in db.TrainingAssignments where a.ID == assignmentId select a).FirstOrDefault();
return assignmentRecord;
}
public int GetTrainingId(int issueId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
int ECNId = issueId;
int trainingId = (from a in db.Trainings where a.ECN == ECNId select a.TrainingID).FirstOrDefault();
return trainingId;
}
public List<int> GetTrainees(int groupId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId select a.UserID).ToList();
return users;
}
public bool isUserTrainingMember(int groupId, int userId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var users = (from a in db.TrainingGroupMembers where a.TrainingGroupID == groupId && a.UserID == userId select a).FirstOrDefault();
if (users == null)
{
return false;
}
else
{
return true;
}
}
public List<TrainingGroup> GetTrainingGroups()
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
return (from a in db.TrainingGroups select a).ToList();
}
public TrainingGroup GetTrainingGroupByID(int groupId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
TrainingGroup groups = (from a in db.TrainingGroups where a.TrainingGroupID == groupId select a).FirstOrDefault();
return groups;
}
public List<int> GetECNAssignedTrainingGroups(int ECNNumber)
{
List<int> trainingGroups = (from a in FabApprovalDB.ECNTrainingBies where a.ECNNumber == ECNNumber select a.AcknowledgementTrainingByID).ToList();
return trainingGroups;
}
public void AddTrainingGroupToECN(int ECNNumber, int groupId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
//ECNTrainingBy ecnTraining = new ECNTrainingBy();
//ecnTraining.AcknowledgementTrainingByID = groupId;
//ecnTraining.ECNNumber = ECNNumber;
var parameters = new DynamicParameters();
parameters.Add("@ECNNumber", ECNNumber);
parameters.Add("@TrainingByID", groupId);
this.db.Execute("ECNInsertTrainingBy", parameters, commandType: CommandType.StoredProcedure);
//db.ECNTrainingBies.Add(ecnTraining);
}
public void SetTrainingFlag(int ECNNumber)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
//ECNTrainingBy ecnTraining = new ECNTrainingBy();
//ecnTraining.AcknowledgementTrainingByID = groupId;
//ecnTraining.ECNNumber = ECNNumber;
var parameters = new DynamicParameters();
parameters.Add("@ECNNumber", ECNNumber);
this.db.Execute("ECNSetTrainingFlag", parameters, commandType: CommandType.StoredProcedure);
//db.ECNTrainingBies.Add(ecnTraining);
}
public List<TrainingAssignment> GetAllTrainingAssignments(int TrainingID)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID select a;
return TrainingData.ToList();
}
public List<TrainingAssignment> GetTrainingAssignments(int TrainingID)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID && a.Deleted != true select a;
return TrainingData.ToList();
}
public List<TrainingAssignment> GetTrainingAssignmentsByUser(int TrainingID, int userID)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var TrainingData = from a in db.TrainingAssignments where a.TrainingID == TrainingID && a.UserID == userID select a;
return TrainingData.ToList();
}
public List<TrainingDocAck> GetAssignedDocs(int trainingAssignmentId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var docs = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId && a.Deleted != true select a).ToList();
return docs;
}
public void AcknowledgeDocument(int trainingDocAckID)
{
var parameters = new DynamicParameters();
parameters = new DynamicParameters();
parameters.Add("@TrainingDocAckID", trainingDocAckID);
//parameters.Add("@AttachmentID", attachmentID);
this.db.Execute("TrainingAcknowledgeDocument", parameters, commandType: CommandType.StoredProcedure);
}
public void UpdateAssignmentStatus(int trainingAssignmentID)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var RecordToUpdate = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a).SingleOrDefault();
if(RecordToUpdate.status != true)
{
RecordToUpdate.DateCompleted = DateTime.Now;
RecordToUpdate.status = true;
try
{
db.SaveChanges();
}
catch (InvalidOperationException e)
{
string exception = e.ToString();
Console.WriteLine(e);
}
}
}
public int GetTrainingIdByAssignment(int trainingAssignmentID)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
int trainingID = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a.TrainingID).SingleOrDefault();
return trainingID;
}
public void UpdateTrainingStatus(int trainingId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault();
if (training != null)
{
training.CompletedDate = DateTime.Now;
training.Status = true;
try
{
db.SaveChanges();
}
catch (InvalidOperationException e)
{
string exception = e.ToString();
Console.WriteLine(e);
}
}
}
public void reOpenTraining(int trainingId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).SingleOrDefault();
if (training != null)
{
training.CompletedDate = null;
training.Status = false;
try
{
db.SaveChanges();
}
catch (InvalidOperationException e)
{
string exception = e.ToString();
Console.WriteLine(e);
}
}
}
public bool CheckTrainingStatus(int trainingAssignmentID)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
bool isFinished = true;
int trainingID = (from a in db.TrainingAssignments where a.ID == trainingAssignmentID select a.TrainingID).SingleOrDefault();
var trainingAssignments = from a in db.TrainingAssignments where a.TrainingID == trainingID && a.Deleted != true select a;
foreach (var training in trainingAssignments)
{
if (training.status == false)
{
isFinished = false;
}
}
return isFinished;
}
public bool CheckTrainingAssignmentStatus(int trainingAssignmentID)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
bool isFinished = true;
//TrainingDocAck docsAssigned = null;
var docsAssigned = from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentID && a.Deleted != true select a;
foreach (var doc in docsAssigned)
{
if (doc.Reviewed == false)
{
isFinished = false;
}
}
return isFinished;
}
public bool IsUserAssigned(int userId, int trainingId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
bool userHasAssignment = false;
var assignments = (from a in db.TrainingAssignments where a.TrainingID == trainingId && a.UserID == userId && a.Deleted != true select a).ToList();
if(assignments.Count() > 0)
{
userHasAssignment = true;
}
return userHasAssignment;
}
public List<Training> GetTrainings()
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var trainings = from a in db.Trainings select a;
return trainings.ToList();
}
public List<TrainingAssignment> GetTrainingAssignmentsByUserID(int userID)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var trainingAssignments = from a in db.TrainingAssignments where a.UserID == userID && a.Deleted != true select a;
return trainingAssignments.ToList();
}
public void DeleteTrainingAssignment(int trainingAssignmentId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var trainingAssignments = from a in db.TrainingAssignments where a.ID == trainingAssignmentId select a;
foreach (var item in trainingAssignments)
{
item.Deleted = true;
item.DeletedDate = DateTime.Now;
}
try
{
db.SaveChanges();
}
catch (InvalidOperationException e)
{
string exception = e.ToString();
Console.WriteLine(e);
}
}
public void DeleteTrainingDocAck(int trainingAssignmentId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var trainingDocAcks = from a in db.TrainingDocAcks where a.TrainingAssignmentID == trainingAssignmentId select a;
foreach (var item in trainingDocAcks)
{
item.Deleted = true;
item.DeletedDate = DateTime.Now;
}
try
{
db.SaveChanges();
}
catch (InvalidOperationException e)
{
string exception = e.ToString();
Console.WriteLine(e);
}
}
public void DeleteTraining(int trainingId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
Training training = (from a in db.Trainings where a.TrainingID == trainingId select a).FirstOrDefault();
training.Deleted = true;
training.DeletedDate = DateTime.Now;
List<TrainingAssignment> trainingAssignments = (from a in db.TrainingAssignments where a.TrainingID == trainingId select a).ToList();
db.SaveChanges();
foreach (TrainingAssignment trainingAssignment in trainingAssignments)
{
DeleteTrainingAssignment(trainingAssignment.ID);
DeleteTrainingDocAck(trainingAssignment.ID);
//db.SaveChanges();
}
}
public void DeleteAssignmentByUserId(int userId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
var userAssignments = (from a in db.TrainingAssignments where a.UserID == userId select a).ToList();
foreach (var item in userAssignments)
{
//get document assignments
var docAssignments = (from a in db.TrainingDocAcks where a.TrainingAssignmentID == item.TrainingID select a).ToList();
//delete each docAssignment
foreach (var docAssignment in docAssignments)
{
DeleteTrainingDocAck(docAssignment.ID);
}
DeleteTrainingAssignment(item.ID);
}
}
public bool CheckValidDocAck(int docAckId)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
TrainingDocAck ack = (from a in db.TrainingDocAcks where a.ID == docAckId select a).FirstOrDefault();
//TODO Check the user is valid
//Check that the assignment exists
if (ack != null)
{
//Check that the assignment isn't deleted
if (ack.Deleted == true)
{
return false;
}
//Check that the assignment isn't completed
else if (ack.Reviewed == true)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
public List<Training> GetAllOpenTrainings()
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
List<Training> openTrainings = (from a in db.Trainings where a.Status != true && a.Deleted != true select a).ToList();
return openTrainings;
}
public List<TrainingAssignment> GetOpenAssignmentsByTrainingID(int trainingID)
{
FabApprovalTrainingEntities db = new FabApprovalTrainingEntities();
List<TrainingAssignment> openAssignments = (from a in FabApprovalDB.TrainingAssignments where a.TrainingID == trainingID && a.status != true && a.Deleted != true select a).ToList();
return openAssignments;
}
}
}