public string UpdateApproval([FromBody] MediaInterviewApprovalModel model) { if (ModelState.IsValid) { var papproval = db.EventMediaInterviewApproval.Where(pa => pa.Id == model.approval.Id).FirstOrDefault(); if (papproval != null) { papproval.ApproverId = model.approval.ApproverId; papproval.Status = model.approval.Status; papproval.ApprovedDate = DateTime.Now; papproval.Remark = model.approval.Remarks; papproval.RequireNext = model.approval.RequireNext; // requirenext is always set to true when coming from verifier approval, and always false from approver3 db.Entry(papproval).State = EntityState.Modified; // HERE db.SaveChanges(); var mediainterview = db.EventMediaInterviewRequest.Where(p => p.Id == papproval.MediaId).FirstOrDefault(); if (mediainterview != null) { // proceed depending on requirenext if (model.approval.RequireNext == true) { EventApprovalLevel nextlevel; switch (papproval.Level) { case EventApprovalLevel.Verifier: nextlevel = EventApprovalLevel.Approver1; break; case EventApprovalLevel.Approver1: nextlevel = EventApprovalLevel.Approver2; break; case EventApprovalLevel.Approver2: nextlevel = EventApprovalLevel.Approver3; break; default: nextlevel = EventApprovalLevel.Approver1; break; } // create next approval record var pnewapproval = new EventMediaInterviewApproval { MediaId = papproval.MediaId, Level = nextlevel, ApproverId = 0, Status = EventApprovalStatus.None, ApprovedDate = DateTime.Now, Remark = "", RequireNext = false }; db.EventMediaInterviewApproval.Add(pnewapproval); // HERE db.SaveChanges(); } //return publication.Title; return(mediainterview.Id + "|" + mediainterview.MediaName + "|" + mediainterview.RefNo + "|" + mediainterview.Location + "|" + mediainterview.MediaStatus); } } } return(""); }
public MediaInterviewApprovalModel Get(int id) { var media = db.EventMediaInterviewRequest.Where(u => u.Id == id) .Select(i => new MediaInterviewRequestApiModel { Id = i.Id, MediaName = i.MediaName, MediaType = i.MediaType, ContactNo = i.ContactNo, AddressStreet1 = i.AddressStreet1, AddressStreet2 = i.AddressStreet2, AddressPoscode = i.AddressPoscode, AddressCity = i.AddressCity, State = i.State, Email = i.Email, DateStart = i.DateStart, DateEnd = i.DateEnd, Time = i.Time, Location = i.Location, Language = i.Language, Topic = i.Topic, RepUserName = i.User.Name, RepEmail = i.User.Email, RepMobileNumber = i.User.MobileNo, RepDesignation = i.User.StaffProfile.Designation.Name, ContactPerson = i.ContactPerson, CreatedBy = i.CreatedBy, CreatedDate = i.CreatedDate, RefNo = i.RefNo, MediaStatus = i.MediaStatus, CreatedByName = i.CreatedByUser.Name, BranchId = i.BranchId, BranchName = i.Branch.Name }).FirstOrDefault(); if (media.MediaStatus != MediaStatus.ApprovedByApprover3 && media.MediaStatus != MediaStatus.RequireAmendment && media.MediaStatus != MediaStatus.RepAvailable && media.MediaStatus != MediaStatus.RepNotAvailable) { var approval = db.EventMediaInterviewApproval.Where(pa => pa.MediaId == id && pa.Status == EventApprovalStatus.None).Select(s => new ApprovalModel { Id = s.Id, MediaId = s.MediaId, Level = s.Level, ApproverId = 0, Status = EventApprovalStatus.None, Remarks = "", RequireNext = s.RequireNext }).FirstOrDefault(); var evaluation = new MediaInterviewApprovalModel { mediainterview = media, approval = approval }; evaluation.mediainterview.Attachments = db.FileDocument.Where(f => f.Display).Join(db.EventFile.Where(e => e.FileCategory == EventFileCategory.MediaInterview && e.ParentId == id), s => s.Id, c => c.FileId, (s, b) => new Attachment { Id = s.Id, FileName = s.FileName }).ToList(); evaluation.mediainterview.RepUserId = db.MediaRepresentative.Where(r => r.MediaId == id).Select(s => s.UserId).ToArray(); return(evaluation); } else { var approval = db.EventMediaInterviewApproval.Where(pa => pa.MediaId == id).Select(s => new ApprovalModel { Id = s.Id, MediaId = s.MediaId, Level = s.Level, ApproverId = 0, Status = s.Status, Remarks = "", RequireNext = s.RequireNext }).FirstOrDefault(); var evaluation = new MediaInterviewApprovalModel { mediainterview = media, approval = approval }; evaluation.mediainterview.Attachments = db.FileDocument.Where(f => f.Display).Join(db.EventFile.Where(e => e.FileCategory == EventFileCategory.MediaInterview && e.ParentId == id), s => s.Id, c => c.FileId, (s, b) => new Attachment { Id = s.Id, FileName = s.FileName }).ToList(); evaluation.mediainterview.RepUserId = db.MediaRepresentative.Where(r => r.MediaId == id).Select(s => s.UserId).ToArray(); return(evaluation); } }