Example #1
0
        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());
        }
Example #2
0
        public Workflow GetById(string dataId, AppReminderTypes type)
        {
            var typeStr = type.ToString();

            return(context.Workflows
                   .Include("Flows")
                   .FirstOrDefault(t => t.Type == typeStr && t.DataId == dataId));
        }
Example #3
0
        public string GetEmailTemplate(AppReminderTypes type)
        {
            var result = "";

            try {
                result = _fileManSvc.ReadTemplate(@"Email\" + type.ToString());
            } catch (Exception exc) {
                ErrorLog(exc);
            }

            return(result);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }