public ResponseMessage CreateRequirement(AddSiteRequirement siteRequirement) { using (var transaction = _context.Database.BeginTransaction()) { try { ResponseMessage responseMessage = new ResponseMessage(); SiteRequirement sitereq = _mapper.Map <SiteRequirement> (siteRequirement); int siteReqCount = _context.SiteRequirement.Count() + 1; string mrno = constantVal.MRNoPrefix + siteReqCount.ToString().PadLeft(6, '0'); sitereq.CreatedAt = DateTime.Now; sitereq.CreatedBy = 1; //TODO sitereq.RoleId = 13; // TODO sitereq.MrNo = mrno; sitereq.Status = "NEW"; sitereq.StatusInternal = "NEW"; _context.SiteRequirement.Add(sitereq); _context.SaveChanges(); //Add the site requirement structure if (siteRequirement.SiteRequirementStructures.Any()) { foreach (var item in siteRequirement.SiteRequirementStructures) { SiteReqStructure siteReqStructure = new SiteReqStructure(); siteReqStructure.SiteReqId = sitereq.Id; siteReqStructure.StructId = item.StructId; siteReqStructure.Quantity = item.Quantity; siteReqStructure.PlanReleasedate = item.PlanReleasedate; siteReqStructure.PlanStartdate = item.PlanStartdate; siteReqStructure.RequireWbsId = item.RequireWbsId; siteReqStructure.ActualReleasedate = DateTime.Now; siteReqStructure.ActualStartdate = item.RequireByDate; siteReqStructure.StructureAttributesVal = item.StructureAttributesVal; _context.SiteReqStructure.Add(siteReqStructure); } } _context.SaveChanges(); SitereqStatusHistory siteStatusHist = new SitereqStatusHistory(); siteStatusHist.MrNo = sitereq.MrNo; siteStatusHist.RoleId = sitereq.RoleId; siteStatusHist.Status = sitereq.Status; siteStatusHist.StatusInternal = sitereq.StatusInternal; siteStatusHist.SitereqId = sitereq.Id; siteStatusHist.UpdatedAt = DateTime.Now; siteStatusHist.UpdatedBy = 1; //TODO _context.SitereqStatusHistory.Add(siteStatusHist); _context.SaveChanges(); responseMessage.Message = $"Site Requirement {sitereq.MrNo} created sucessfully"; transaction.Commit(); return(responseMessage); } catch (Exception ex) { transaction.Rollback(); throw ex; } } }
public ResponseMessage UpdateRequirement(AddSiteRequirement siteRequirement, int id) { ResponseMessage responseMessage = new ResponseMessage(); try { var siteReq = _context.SiteRequirement.Where(x => x.Id == id && x.IsDelete == false).FirstOrDefault(); if (siteReq != null) { if (_context.SiteRequirement.Where(x => x.Id != id && x.IsDelete == false).Count() > 0) { throw new ValueNotFoundException("Site Requirement Id doesnot exist."); } else { siteReq.FromProjectId = siteRequirement.ProjectId; siteReq.Remarks = siteRequirement.Remarks; siteReq.Remarks = siteRequirement.Remarks; siteReq.Status = siteRequirement.Status; siteReq.StatusInternal = siteRequirement.StatusInternal; siteReq.RoleId = 1; //TODO siteReq.UpdatedBy = 1; //TODO siteReq.UpdatedAt = DateTime.Now; var siteReqStructures = _context.SiteReqStructure.Where(x => x.SiteReqId == siteReq.Id).ToList(); var addedsiteReqStructures = siteRequirement.SiteRequirementStructures.Where(x => !siteReqStructures.Any(p => p.Id == x.Id)).ToList(); var deletedsiteReqStructures = siteReqStructures.Where(x => !siteRequirement.SiteRequirementStructures.Any(p => p.Id == x.Id)).ToList(); var updatedsiteReqStructures = siteRequirement.SiteRequirementStructures.Where(x => siteReqStructures.Any(p => p.Id == x.Id)).ToList(); //add Project site req structure if (addedsiteReqStructures.Any()) { foreach (var item in addedsiteReqStructures) { SiteReqStructure siteReqStructure = new SiteReqStructure(); siteReqStructure.SiteReqId = siteReq.Id; siteReqStructure.StructId = item.StructId; siteReqStructure.PlanStartdate = item.PlanStartdate; siteReqStructure.ActualStartdate = item.RequireByDate; siteReqStructure.PlanReleasedate = item.PlanReleasedate; siteReqStructure.RequireWbsId = item.RequireWbsId; _context.SiteReqStructure.Add(siteReqStructure); } } //delete Project site req structure if (deletedsiteReqStructures.Any()) { foreach (var item in deletedsiteReqStructures) { _context.SiteReqStructure.Remove(item); } } //update Project site req structure if (updatedsiteReqStructures.Any()) { foreach (var item in updatedsiteReqStructures) { SiteReqStructure siteReqStructure = _context.SiteReqStructure.Where(x => x.Id == item.Id).FirstOrDefault(); siteReqStructure.StructId = item.StructId; siteReqStructure.Quantity = item.Quantity; _context.SaveChanges(); } } _context.SaveChanges(); SitereqStatusHistory siteStatusHist = new SitereqStatusHistory(); siteStatusHist.MrNo = siteReq.MrNo; siteStatusHist.RoleId = siteReq.RoleId; siteStatusHist.Status = siteReq.Status; siteStatusHist.StatusInternal = siteReq.StatusInternal; siteStatusHist.UpdatedAt = DateTime.Now; siteStatusHist.UpdatedBy = 1; //TODO _context.SitereqStatusHistory.Add(siteStatusHist); _context.SaveChanges(); AuditLogs audit = new AuditLogs() { Action = "Site Requirement", Message = string.Format("Site Requirement Updated Successfully {0}", siteReq.Id), CreatedAt = DateTime.Now, CreatedBy = 1 //TODO }; _commonRepo.AuditLog(audit); return(responseMessage = new ResponseMessage() { Message = "Site Requirement updated successfully.", }); } } else { throw new ValueNotFoundException("Site Requirement not available."); } } catch (Exception ex) { throw ex; } }