public static void UpdateCheckListInstanceEmailAddress(string emailAddress, int oStepId) { using (AppDb context = new AppDb()) { CheckListInstanceStep eStep = context.CheckListInstanceSteps.FirstOrDefault(p => p.Id == oStepId); if (eStep != null) { if (string.IsNullOrEmpty(eStep.EmailNotification)) { eStep.EmailNotification = emailAddress; } else { char[] emailChar = eStep.EmailNotification.ToCharArray(); if (emailChar[emailChar.Length - 1].Equals(",")) { eStep.EmailNotification = eStep.EmailNotification + emailAddress; } else { eStep.EmailNotification = eStep.EmailNotification + "," + emailAddress; } } context.SaveChanges(); } } }
public static bool CheckIsCompleteStep(int?checkListInstanceInfoId, int seqNo) { using (AppDb context = new AppDb()) { CheckListInstanceStep cStep = context.CheckListInstanceSteps.FirstOrDefault( p => p.CheckListInstanceInfoId == checkListInstanceInfoId && p.SeqNo == seqNo); if (cStep.Status == Convert.ToByte(CheckListStatus.Complete)) { return(true); } } return(false); }
public static void SetStatusCheckListStep(int id, CheckListStatus clStatus) { using (AppDb context = new AppDb()) { CheckListInstanceStep completeStep = context.CheckListInstanceSteps.FirstOrDefault(p => p.Id == id); if (completeStep != null) { completeStep.Status = (byte?)clStatus; if (completeStep.StepProcessStart == null) { completeStep.StepProcessStart = DateTime.Now; } completeStep.StepProcessEnd = DateTime.Now; if (completeStep.EmailNotification != null) { //TODO:send email notification } } context.SaveChanges(); //update checklistinfo progress byte status = (byte)CheckListStatus.Complete; int countComplete = context.CheckListInstanceSteps.Count( p => p.CheckListInstanceInfoId == completeStep.CheckListInstanceInfoId && p.Status == status); status = (byte)CheckListStatus.InComplete; int countInComplete = context.CheckListInstanceSteps.Count( p => p.CheckListInstanceInfoId == completeStep.CheckListInstanceInfoId && (p.Status == status || p.Status == null)); decimal percentComplete = (Convert.ToDecimal(countComplete) / Convert.ToDecimal(countInComplete + countComplete)) * 100; CheckListInstanceInfo clInfo = context.CheckListInstanceInfoes.FirstOrDefault( p => p.Id == completeStep.CheckListInstanceInfoId); if (clInfo != null) { clInfo.LastActivity = completeStep.StepName; clInfo.Progress = percentComplete; clInfo.ModifiedDate = DateTime.Now; } context.SaveChanges(); } }
public static bool CreateNewCheckListInstance(int checkListTpl, string packingMonth, int vModelId = 0, int variantId = 0) { CheckListTemplateInfo chkTpl = RetrieveCheckListTemplateById(checkListTpl); Model oModel = ModelRepository.RetrieveModelById(vModelId); Variant oVariant = ModelRepository.RetrieveModelVariantById(variantId); //{VPM}-{MODEL}-{VARIANT}/{AUTONUMBER} string docNumber = chkTpl.TemplateDocNumber; if (chkTpl.TemplateDocNumber.Contains("{VPM}")) { if (packingMonth == String.Empty) { //set to current default packing month docNumber = docNumber.Replace("{VPM}", DateTime.Now.ToString("yyyyMM")); } else { docNumber = docNumber.Replace("{VPM}", packingMonth); } } if (chkTpl.TemplateDocNumber.Contains("{MODEL}")) { if (oModel != null) { docNumber = docNumber.Replace("{MODEL}", oModel.ModelName); } } if (chkTpl.TemplateDocNumber.Contains("{VARIANT}")) { if (oVariant != null) { docNumber = docNumber.Replace("{VARIANT}", oVariant.Variant1.Replace(" ", "")); } } //Generate AutoNumber CheckListTemplateInfo chkListInstanceInfo = RetrieveCheckListTemplateInfoBy(checkListTpl, packingMonth, oModel.ModelName); string runningNumber = "000001"; if (chkListInstanceInfo == null) { docNumber = docNumber.Replace("{AUTONUMBER}", runningNumber); } else { runningNumber = (Convert.ToInt32(chkListInstanceInfo.TemplateDocNumber) + 1).ToString().PadLeft(6, '0'); docNumber = docNumber.Replace("{AUTONUMBER}", runningNumber); } //save to database after finish create documentNumber try { using (AppDb context = new AppDb()) { //header CheckListInstanceInfo infoHeader = new CheckListInstanceInfo(); infoHeader.CheckListTemplateInfoId = checkListTpl; infoHeader.PackingMonth = packingMonth; infoHeader.Model = oModel.ModelName; infoHeader.Variant = oVariant.Variant1.Replace(" ", ""); infoHeader.RunningNumber = runningNumber; infoHeader.InstanceName = chkTpl.TemplateName; //default instance Name, editable from Web UI infoHeader.InstanceDocument = docNumber; infoHeader.LastActivity = "Initial Checklist"; //default value infoHeader.Progress = 0; //default valueinfoHeader.CreatedBy = "Admin"; infoHeader.CreatedDate = DateTime.Now; //ambil detail step dari template step List <CheckListTemplateStep> listDetailStep = RetrieveCheckListTemplateStepByTemplateInfoId(checkListTpl); foreach (CheckListTemplateStep step in listDetailStep) { CheckListInstanceStep stepInstance = new CheckListInstanceStep(); stepInstance.CheckListInstanceInfoId = checkListTpl; stepInstance.SeqNo = step.SeqNo; stepInstance.StepName = step.StepName; stepInstance.UserGroupId = step.UserGroupId; stepInstance.UrlLink = step.UrlLink; stepInstance.StoreProcedureName = step.StoreProcedureName; stepInstance.EmailNotification = step.EmailNotification; infoHeader.CheckListInstanceSteps.Add(stepInstance); } context.CheckListInstanceInfoes.Add(infoHeader); context.SaveChanges(); } } catch (Exception) { return(false); } return(true); }
public static void ExecuteProcessData(string execScript, bool isUpdateToComplete, int id, DateTime startProcess, DateTime endProcess) { AppDb context = new AppDb(); using (SqlConnection conn = new SqlConnection(context.Database.Connection.ConnectionString)) { if (conn.State == ConnectionState.Closed) { conn.Open(); } SqlCommand cmd = new SqlCommand(execScript, conn); cmd.CommandType = CommandType.Text; cmd.CommandTimeout = 7000; cmd.ExecuteNonQuery(); endProcess = DateTime.Now; if (isUpdateToComplete) { string sql = "UPDATE CheckListInstanceStep SET Status = 2, StepProcessStart = @StepProcessStart, StepProcessEnd = @StepProcessEnd WHERE Id = @id"; cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@id", id); cmd.Parameters.AddWithValue("@StepProcessStart", startProcess); cmd.Parameters.AddWithValue("@StepProcessEnd", endProcess); cmd.ExecuteNonQuery(); //set header percentage status CheckListInstanceStep oStep = context.CheckListInstanceSteps.FirstOrDefault(p => p.Id == id); if (oStep != null) { CheckListInstanceInfo oStepHeader = oStep.CheckListInstanceInfo; byte status = (byte)CheckListStatus.Complete; int countComplete = context.CheckListInstanceSteps.Count( p => p.CheckListInstanceInfoId == oStepHeader.Id && p.Status == status); status = (byte)CheckListStatus.InComplete; int countInComplete = context.CheckListInstanceSteps.Count( p => p.CheckListInstanceInfoId == oStepHeader.Id && (p.Status == status || p.Status == null)); decimal percentComplete = (Convert.ToDecimal(countComplete) / Convert.ToDecimal(countInComplete + countComplete)) * 100; CheckListInstanceInfo clInfo = context.CheckListInstanceInfoes.FirstOrDefault( p => p.Id == oStepHeader.Id); if (clInfo != null) { clInfo.LastActivity = oStep.StepName; clInfo.Progress = percentComplete; clInfo.ModifiedDate = DateTime.Now; } context.SaveChanges(); } } } }