Exemple #1
0
        public AssignmentInfoModel GetAssignmentModel()
        {
            var id = RouteData.Values["assignmentId"] != null ? new Guid(RouteData.Values["assignmentId"].ToString()) : Guid.Empty;

            AssignmentInfoModel model = null;

            if (id != Guid.Empty)
            {
                var assignment = WorkflowInit.Runtime.PersistenceProvider.GetAssignmentAsync(id).Result;
                if (assignment != null)
                {
                    model = GetAssignmentInfoModel(assignment, false);
                }
                ForCreate  = false;
                IsDeleted  = model.IsDeleted;
                IsActive   = model.IsActive;
                DateStart  = model.DateStart;
                DateFinish = model.DateFinish;
            }
            else
            {
                model = GetAssignmentInfoModel(new Assignment()
                {
                    ProcessId = Guid.Parse(Request.QueryString["processId"])
                }, true);
                ForCreate = true;
                IsDeleted = false;
                IsActive  = true;
            }

            return(model);
        }
        private AssignmentInfoModel GetAssignmentInfoModel(Assignment assignment, bool forCreate)
        {
            var document  = _documentRepository.Get(assignment.ProcessId);
            var employees = _employeeRepository.GetAll();

            var am = new AssignmentInfoModel
            {
                AssignmentId       = assignment.AssignmentId,
                Name               = assignment.Name,
                StatusState        = assignment.StatusState,
                ProcessId          = assignment.ProcessId,
                DateCreation       = assignment.DateCreation,
                DateStart          = assignment.DateStart,
                DateFinish         = assignment.DateFinish,
                DeadlineToComplete = assignment.DeadlineToComplete,
                DeadlineToStart    = assignment.DeadlineToStart,
                Tags               = assignment.Tags ?? new List <string>(),
                IsDeleted          = assignment.IsDeleted,
                Description        = assignment.Description,
                AssignmentCode     = assignment.AssignmentCode,
                DocumentNumber     = document?.Number,
                Statuses           = WorkflowInit.Runtime.AssignmentApi.GetAssignmentStatuses(),
                Employees          = employees.ToDictionary(e => e.Id, e => e.Name)
            };

            if (forCreate)
            {
                am.Observers    = new Dictionary <Guid, string>();
                am.ExecutorName = null;
                am.Executor     = null;
                am.IsActive     = true;
                am.FormAction   = "Create";
            }
            else
            {
                var ids       = assignment.Observers?.Select(Guid.Parse).Distinct().ToList();
                var observers = employees.Where(e => ids.Contains(e.Id))
                                .ToDictionary(e => e.Id, e => e.Name);

                am.Observers    = observers;
                am.Executor     = Guid.Parse(assignment.Executor);
                am.ExecutorName = employees.FirstOrDefault(e => e.Id == Guid.Parse(assignment.Executor))?.Name;
                am.IsActive     = assignment.IsActive;
                am.FormAction   = "Update";
            }

            return(am);
        }
Exemple #3
0
        public void UpdateAssignmentModel(Guid assignmentId)
        {
            var am = new AssignmentInfoModel();

            TryUpdateModel(am);
            if (!ModelState.IsValid)
            {
                return;
            }

            if (am.FormAction == "Create")
            {
                var id   = Guid.NewGuid();
                var form = new AssignmentCreationForm()
                {
                    AssignmentCode     = am.AssignmentCode,
                    DeadlineToComplete = am.DeadlineToComplete == null ? (DateTime?)null : DateTime.Parse(am.DeadlineToComplete),
                    DeadlineToStart    = am.DeadlineToStart == null ? (DateTime?)null : DateTime.Parse(am.DeadlineToStart),
                    Description        = am.Description,
                    Executor           = ((Guid)am.Executor).ToString(),
                    Id        = id,
                    IsActive  = true,
                    Name      = am.Name,
                    Observers = am.Observers?.Select(x => x.Key.ToString()).ToList() ?? new List <string>(),
                    Tags      = am.Tags ?? new List <string>()
                };
                bool result = WorkflowInit.Runtime.AssignmentApi.CreateAssignmentAsync(am.ProcessId, form).Result;
                Response.Redirect($"~/Document/AssignmentInfo/{form.Id}");
            }
            else
            {
                var a = WorkflowInit.Runtime.PersistenceProvider.GetAssignmentAsync((Guid)am.AssignmentId).Result;

                a.Description        = am.Description;
                a.Executor           = am.Executor.ToString();
                a.Name               = am.Name;
                a.StatusState        = am.StatusState;
                a.DeadlineToComplete = am.DeadlineToComplete == null ? (DateTime?)null : DateTime.Parse(am.DeadlineToComplete);
                a.DeadlineToStart    = am.DeadlineToStart == null ? (DateTime?)null : DateTime.Parse(am.DeadlineToStart);

                bool result = WorkflowInit.Runtime.AssignmentApi.UpdateAssignmentAsync(a).Result;
                Response.Redirect($"~/Document/AssignmentInfo/{am.AssignmentId}");
            }
        }
        public ActionResult AssignmentCreateOrUpdate(AssignmentInfoModel am)
        {
            if (am.FormAction == "Create")
            {
                var id   = Guid.NewGuid();
                var form = new AssignmentCreationForm()
                {
                    AssignmentCode     = am.AssignmentCode,
                    DeadlineToComplete = am.DeadlineToComplete,
                    DeadlineToStart    = am.DeadlineToStart,
                    Description        = am.Description,
                    Executor           = ((Guid)am.Executor).ToString(),
                    Id        = id,
                    IsActive  = true,
                    Name      = am.Name,
                    Observers = am.Observers?.Select(x => x.Key.ToString()).ToList() ?? new List <string>(),
                    Tags      = am.Tags ?? new List <string>()
                };

                bool result = WorkflowInit.Runtime.AssignmentApi.CreateAssignmentAsync(am.ProcessId, form).Result;
                return(RedirectToAction("AssignmentInfo", new { id = id }));
            }
            else
            {
                var a = WorkflowInit.Runtime.PersistenceProvider.GetAssignmentAsync((Guid)am.AssignmentId).Result;

                a.Description        = am.Description;
                a.Executor           = am.Executor.ToString();
                a.Name               = am.Name;
                a.StatusState        = am.StatusState;
                a.DeadlineToComplete = am.DeadlineToComplete;
                a.DeadlineToStart    = am.DeadlineToStart;

                bool result = WorkflowInit.Runtime.AssignmentApi.UpdateAssignmentAsync(a).Result;

                return(RedirectToAction("AssignmentInfo", new { id = a.AssignmentId }));
            }
        }