public ActionResult AddTicket(int id = 0)
        {
            ChangeManagementModel vm = new ChangeManagementModel();

            if (id != 0)
            {
                var c = _context.ChangeManagementDetails.SingleOrDefault(x => x.Id == id);
                vm = new ChangeManagementModel()
                {
                    Id              = c.Id,
                    AssignTo        = c.AssignTo,
                    ChangeSubTypeId = c.ChangeSubTypeId,
                    ChangeTypeId    = c.ChangeTypeId,
                    ClientId        = c.ClientId,
                    CloseBy         = c.CloseBy,
                    CloseDate       = c.CloseDate,
                    CreateBy        = c.CreateBy,
                    CreateDate      = c.CreateDate,
                    Description     = c.Description,
                    DueDate         = c.DueDate,
                    Priority        = c.Priority,
                    ProjectId       = c.ProjectId,
                    ResolveBy       = c.ResolveBy,
                    ResolveDate     = c.ResolveDate,
                    StepToReproduce = c.StepToReproduce,
                    Status          = c.Status,
                    Title           = c.Title,
                    IsEdit          = true
                };



                _context.ChangeManagementComments
                .Where(x => x.ChangeManagementId == id)
                .ToList().
                ForEach(cm => vm.Comments.Add(new ChangeManagementCommentModel()
                {
                    Id = cm.Id,
                    ChangeManagementId = cm.ChangeManagementId,
                    ChangeManagement   = cm.ChangeManagement,
                    Comment            = cm.Comment
                }));

                _context.ChangeManagementAttachments
                .Where(x => x.ChangeManagementId == id)
                .ToList().
                ForEach(cm => vm.Attachments.Add(new ChangeManagementAttachmentModel()
                {
                    Id = cm.Id,
                    ChangeManagementId = cm.ChangeManagementId,
                    ChangeManagement   = cm.ChangeManagement,
                    AttachmentPath     = cm.AttachmentPath,
                    OriginalName       = cm.OriginalName
                }));
            }
            else
            {
                vm.DueDate = DateTime.Now.Date;
            }

            return(View(vm));
        }
        public ActionResult CreateTicket(ChangeManagementModel vm)
        {
            var cm = new ChangeManagementDetail();

            if (vm.IsEdit)
            {
                cm = _context.ChangeManagementDetails.SingleOrDefault(x => x.Id == vm.Id);
            }

            cm.Id              = vm.Id;
            cm.AssignTo        = vm.AssignTo;
            cm.ChangeSubTypeId = vm.ChangeSubTypeId;
            cm.ChangeTypeId    = vm.ChangeTypeId;
            cm.ClientId        = vm.ClientId;
            cm.CloseBy         = vm.CloseBy;
            cm.CloseDate       = vm.CloseDate;
            cm.CreateBy        = vm.CreateBy;
            cm.CreateDate      = vm.CreateDate;
            cm.Description     = vm.Description;
            cm.DueDate         = vm.DueDate;
            cm.Priority        = vm.Priority;
            cm.ProjectId       = vm.ProjectId;
            cm.ResolveBy       = vm.ResolveBy;
            cm.ResolveDate     = vm.ResolveDate;
            cm.StepToReproduce = vm.StepToReproduce;
            cm.Status          = vm.Status;
            cm.Title           = vm.Title;

            if (!vm.IsEdit)
            {
                cm.CreateDate = DateTime.Now;
                cm.CreateBy   = Extension.GetUserId();
                _context.ChangeManagementDetails.Add(cm);
            }

            _context.SaveChanges();


            if (vm.IsEdit)
            {
                var comments = _context.ChangeManagementComments.Where(x => x.ChangeManagementId == cm.Id);
                _context.ChangeManagementComments.RemoveRange(comments);

                var ats = _context.ChangeManagementAttachments.Where(x => x.ChangeManagementId == cm.Id);
                _context.ChangeManagementAttachments.RemoveRange(ats);
            }

            foreach (var commet in vm.Comments)
            {
                ChangeManagementComment c = new ChangeManagementComment();
                c.Comment            = commet.Comment;
                c.CreatedAt          = DateTime.Now;
                c.CreatedBy          = Extension.GetUserId();
                c.ChangeManagementId = cm.Id;
                _context.ChangeManagementComments.Add(c);
            }

            foreach (var attachment in vm.Attachments)
            {
                ChangeManagementAttachment a = new ChangeManagementAttachment();
                a.ChangeManagementId = cm.Id;
                a.OriginalName       = attachment.OriginalName;
                a.AttachmentPath     = attachment.AttachmentPath;
                a.CreatedAt          = DateTime.Now;
                a.CreatedBy          = Extension.GetUserId();
                _context.ChangeManagementAttachments.Add(a);
            }

            _context.SaveChanges();



            return(RedirectToAction("Index", "ChangeManagement"));
        }