public List <Flow> GetFlowByDataId(string dataId, AppReminderTypes type) { var typeStr = type.ToString(); return(context.Workflows .Include("Flows") .FirstOrDefault(t => t.DataId == dataId)?.Flows?.Where(t => t.Type == typeStr).ToList()); }
public Workflow GetById(string dataId, AppReminderTypes type) { var typeStr = type.ToString(); return(context.Workflows .Include("Flows") .FirstOrDefault(t => t.Type == typeStr && t.DataId == dataId)); }
public string GetEmailTemplate(AppReminderTypes type) { var result = ""; try { result = _fileManSvc.ReadTemplate(@"Email\" + type.ToString()); } catch (Exception exc) { ErrorLog(exc); } return(result); }
public Workflow RestoreDeleteFlow(string dataId, AppReminderTypes type) { var typeStr = type.ToString(); var form = context.Workflows .Include("Flows") .FirstOrDefault(t => t.Type == typeStr && t.DataId == dataId); var user = GetCurrentUser(); if (form != null) { form.SetUpdated(); if (form.Flows != null) { var toRestoreDelete = form.Flows.ToList(); try { foreach (var item in form.Flows.ToList()) { BackgroundJob.Enqueue(() => SendMail(item.Id)); } } catch (Exception exc) { ErrorLog(exc); } foreach (var item in toRestoreDelete) { item.SetUpdated(); item.IsDeleted = false; } } form.IsDeleted = false; form.SetUpdated(); context.SaveChanges(); } return(form); }
public Workflow Upsert(IEnumerable <Flow> flows, string dataId, AppReminderTypes type) { var typeStr = type.ToString(); var tomorrow = Tomorrow; var notifBeforecount = context.Flows.Count(t => t.IsDeleted != true && t.IsDraft == false && (System.Data.Entity.DbFunctions.TruncateTime(t.DueDate) == Today && t.DueDate < tomorrow) ); var form = context.Workflows .Include("Flows") .FirstOrDefault(t => t.Type == typeStr && t.DataId == dataId); if (form == null) { form = new Workflow(); form.Init(); form.SetCreated(); form.Flows = new List <Flow>(); form.DataId = dataId; form.Type = typeStr; form.Flows = flows?.ToList() ?? new List <Flow>(); foreach (var item in form.Flows) { item.Type = typeStr; item.Status = WorkflowForm.WF_STATUS_CREATED; item.DisplayGrouping = item.DisplayGrouping ?? item.Type; } //form.Flows = flows.Select(t => { // var flow = Mapper.Map<Flow>(t); // flow.DueDate = flow.DueDate?.Date; // flow.Status = WorkflowForm.WF_STATUS_CREATED; // flow.Type = typeStr; // //flow.Init(); // return flow; //}).ToList(); context.Workflows.Add(form); } else { form.SetUpdated(); if (form.Flows != null) { var toDelete = form.Flows.ToList(); //try { // foreach (var item in toDelete) { // BackgroundJob.Enqueue(() => CancelMail(item)); // } //} catch (Exception exc) { // ErrorLog(exc); //} toDelete.ForEach(t => { context.Flows.Remove(t); }); } form.Flows = flows?.ToList() ?? new List <Flow>(); foreach (var item in form.Flows) { item.Type = typeStr; item.Status = WorkflowForm.WF_STATUS_CREATED; item.DisplayGrouping = item.DisplayGrouping ?? item.Type; } } context.SaveChanges(); try { var notifAftercount = context.Flows.Count(t => t.IsDeleted != true && t.IsDraft == false && (System.Data.Entity.DbFunctions.TruncateTime(t.DueDate) == Today && t.DueDate < tomorrow) ); if (notifAftercount != notifBeforecount) { BackgroundJob.Enqueue(() => _reminderSvc.DistributeReminder(false)); } } catch (Exception exc) { ErrorLog(exc); } return(form); }