454 lines
17 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|