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 UpdatetructureAttributes(SiteReqStructureVm input) { try { ResponseMessage responseMessage = new ResponseMessage(); SiteReqStructure structid = _context.SiteReqStructure.Single(w => w.Id == input.SiteReqStructureId); if (structid != null) { structid.StructureAttributesVal = input.StructureAttributesVal; } _context.SiteReqStructure.Update(structid); _context.SaveChanges(); responseMessage.Message = "Structure Cost Updated sucessfully"; return(responseMessage); } catch (Exception ex) { throw ex; } }
public ResponseMessage CreateDispatch(TWCCDispatchPayload payload) { try { string dispatchNo = string.Empty; string structCode = string.Empty; int dispReuseCount = 0; int projectId = 1; List <dispatchedStrucCount> result = new List <dispatchedStrucCount>(); string count = string.Format("select count(*) as cnt from dispatch_requirement dr inner join disp_req_structure drs on dr.id = drs.dispreq_id inner join project_structure ps on drs.proj_struct_id = ps.id where ps.structure_id = {0} and dr.sitereq_id = {1}", payload.StructureId, payload.siteRequirementId); result = _context.Set <dispatchedStrucCount>().FromSqlRaw(count).ToList(); int dispatchedQuantity = result.FirstOrDefault().cnt; int excedCout = dispatchedQuantity + payload.Quantity; int totalcount = _context.SiteReqStructure.Single(s => s.SiteReqId == payload.siteRequirementId && s.StructId == payload.StructureId).Quantity ?? 0; if (totalcount < excedCout) { throw new ValueNotFoundException("Dispatch quantity should match the required quantity."); } ServiceType servType = _context.ServiceType.Where(x => x.Id == payload.ServiceTypeId).FirstOrDefault(); if (servType.Name == commonEnum.ServiceType.Fabrication.ToString()) { dispReuseCount = _context.DispatchRequirement.Include(m => m.Servicetype).Where(x => x.DispatchNo.Contains("DC")).Count() + 1; } else if (servType.Name == commonEnum.ServiceType.OutSourcing.ToString()) { dispReuseCount = _context.DispatchRequirement.Include(m => m.Servicetype).Where(x => x.DispatchNo.Contains("DC")).Count() + 1; } else if (servType.Name == commonEnum.ServiceType.Reuse.ToString()) { dispReuseCount = _context.DispatchRequirement.Include(m => m.Servicetype).Where(x => x.DispatchNo.Contains("DA")).Count() + 1; } SiteRequirement siteReqr = _context.SiteRequirement.Include(c => c.SiteReqStructure).Where(x => x.Id == payload.siteRequirementId).FirstOrDefault(); // for structure id override in multiple component if (servType.Name == commonEnum.ServiceType.Fabrication.ToString() || servType.Name == commonEnum.ServiceType.OutSourcing.ToString()) { // int structCount = _context.ProjectStructure.Count () + 1; // structCode = constantVal.StructureIdPrefix + structCount.ToString ().PadLeft (6, '0'); dispatchNo = constantVal.DispVendorPrefix + dispReuseCount.ToString().PadLeft(6, '0'); } if (servType.Name == commonEnum.ServiceType.Reuse.ToString()) { dispatchNo = constantVal.DispReusePrefix + dispReuseCount.ToString().PadLeft(6, '0'); } ResponseMessage responseMessage = new ResponseMessage(); using (var transaction = _context.Database.BeginTransaction()) { try { DispatchRequirement dispReq = new DispatchRequirement(); dispReq.CreatedAt = DateTime.Now; dispReq.CreatedBy = payload.CreatedBy; //TODO dispReq.DispatchNo = dispatchNo; dispReq.RoleId = 1; // TODO dispReq.ServicetypeId = payload.ServiceTypeId; dispReq.SitereqId = payload.siteRequirementId; dispReq.SiteReqStructid = _context.SiteReqStructure.Where(x => x.SiteReqId == payload.siteRequirementId && x.StructId == payload.StructureId).FirstOrDefault().Id; dispReq.Status = Util.GetDescription(commonEnum.SiteDispatchSatus.NEW).ToString(); dispReq.StatusInternal = Util.GetDescription(commonEnum.SiteDispatchSatus.NEW).ToString(); dispReq.ToProjectid = payload.ToProjectId; dispReq.Quantity = payload.Quantity; _context.DispatchRequirement.Add(dispReq); _context.SaveChanges(); int structCountDb = _context.ProjectStructure.Count(); for (int iQty = 1; iQty <= payload.Quantity; iQty++) { if (servType.Name == commonEnum.ServiceType.Fabrication.ToString() || servType.Name == commonEnum.ServiceType.OutSourcing.ToString()) { int structCount = structCountDb + iQty; structCode = constantVal.StructureIdPrefix + structCount.ToString().PadLeft(6, '0'); } ProjectStructure projectStructure = new ProjectStructure(); if (servType.Name == commonEnum.ServiceType.Fabrication.ToString() || servType.Name == commonEnum.ServiceType.OutSourcing.ToString()) { SiteReqStructure siteRequirementStructure = _context.SiteReqStructure.Where(x => x.SiteReqId == payload.siteRequirementId && x.StructId == payload.StructureId).FirstOrDefault(); projectStructure.StructureId = payload.StructureId; projectStructure.StructCode = structCode; projectStructure.ProjectId = payload.ToProjectId; projectStructure.DrawingNo = ""; projectStructure.ComponentsCount = 0; projectStructure.StructureAttributesVal = siteRequirementStructure != null ? siteRequirementStructure.StructureAttributesVal : ""; projectStructure.EstimatedWeight = 0; projectStructure.StructureStatus = Util.GetDescription(commonEnum.StructureStatus.NOTAVAILABLE).ToString(); projectStructure.CurrentStatus = Util.GetDescription(commonEnum.StructureInternalStatus.DISPATCHINPROGRESS).ToString(); projectStructure.IsDelete = false; projectStructure.CreatedBy = payload.CreatedBy; projectStructure.CreatedAt = DateTime.Now; _context.ProjectStructure.Add(projectStructure); _context.SaveChanges(); } else { ProjectStructure structDB = _context.ProjectStructure.Where(x => x.Id == payload.ProjectStructureId).FirstOrDefault(); structDB.CurrentStatus = Util.GetDescription(commonEnum.StructureInternalStatus.DISPATCHINPROGRESS).ToString(); structDB.StructureStatus = Util.GetDescription(commonEnum.StructureStatus.NOTAVAILABLE).ToString(); _context.SaveChanges(); } DispReqStructure dispStrcture = new DispReqStructure(); dispStrcture.ProjStructId = servType.Name == commonEnum.ServiceType.Fabrication.ToString() || servType.Name == commonEnum.ServiceType.OutSourcing.ToString() ? projectStructure.Id : payload.ProjectStructureId; dispStrcture.DispreqId = dispReq.Id; if (servType.Name == commonEnum.ServiceType.Reuse.ToString()) { dispStrcture.FromProjectId = payload.FromProjectId; dispStrcture.SurplusDate = payload.SurplusFromDate; } dispStrcture.DispStructStatus = Util.GetDescription(commonEnum.SiteDispStructureStatus.NEW).ToString(); _context.DispReqStructure.Add(dispStrcture); _context.SaveChanges(); if (servType.Name == commonEnum.ServiceType.Reuse.ToString()) { var componentList = _context.Component.Where(x => x.ProjStructId == payload.ProjectStructureId).ToList(); foreach (Component comp in componentList) { DispStructureComp dsc = new DispStructureComp(); dsc.DispStructureId = dispStrcture.Id; dsc.DispCompId = comp.Id; _context.DispStructureComp.Add(dsc); } _context.SaveChanges(); } } /***update site requirement Structure status ***/ CodeList dispQty = _context.Query <CodeList>().FromSqlRaw(string.Format("select count(*) as Id,'' as Name , 0 as ServiceTypeId from dispatch_requirement dr inner join disp_req_structure drs on dr.id = drs.dispreq_id inner join project_structure ps on drs.proj_struct_id = ps.id where ps.structure_id ={0} and dr.sitereq_id ={1} and drs.disp_struct_status <> '{2}'", payload.StructureId, payload.siteRequirementId, Util.GetDescription(commonEnum.SiteDispStructureStatus.REJECT).ToString())).FirstOrDefault(); var dispatchedStrucCount = dispQty.Id; SiteRequirement dbSiteReq = _context.SiteRequirement.Where(x => x.Id == payload.siteRequirementId).FirstOrDefault(); SiteReqStructure dbSiteReqStructure = _context.SiteReqStructure.Where(x => x.SiteReqId == payload.siteRequirementId && x.StructId == payload.StructureId).FirstOrDefault(); if (dbSiteReqStructure.Quantity > dispatchedStrucCount) { dbSiteReqStructure.Status = Util.GetDescription(commonEnum.SiteRequiremntStatus.PARTIALLYDISPATCHED).ToString(); } else { dbSiteReqStructure.Status = Util.GetDescription(commonEnum.SiteRequiremntStatus.DISPATCHED).ToString(); } _context.SaveChanges(); /***update site requirement status ***/ List <SiteReqStructure> lstReqStructure = _context.SiteReqStructure.Where(x => x.SiteReqId == payload.siteRequirementId).ToList(); if (lstReqStructure.Count() > 0 && lstReqStructure.Where(x => x.Status != Util.GetDescription(commonEnum.SiteRequiremntStatus.DISPATCHED).ToString()).Count() > 0) { dbSiteReq.Status = Util.GetDescription(commonEnum.SiteRequiremntStatus.PARTIALLYDISPATCHED).ToString(); dbSiteReq.StatusInternal = Util.GetDescription(commonEnum.SiteRequiremntStatus.PARTIALLYDISPATCHED).ToString(); } else { dbSiteReq.Status = Util.GetDescription(commonEnum.SiteRequiremntStatus.DISPATCHED).ToString(); dbSiteReq.StatusInternal = Util.GetDescription(commonEnum.SiteRequiremntStatus.DISPATCHED).ToString(); } _context.SaveChanges(); DisreqStatusHistory dispatchReqStatusHistory = new DisreqStatusHistory(); dispatchReqStatusHistory.DispatchNo = dispatchNo; dispatchReqStatusHistory.DispreqId = dispReq.Id; dispatchReqStatusHistory.Status = Util.GetDescription(commonEnum.SiteDispatchSatus.NEW).ToString(); dispatchReqStatusHistory.StatusInternal = Util.GetDescription(commonEnum.SiteDispatchSatus.NEW).ToString(); dispatchReqStatusHistory.Notes = ""; dispatchReqStatusHistory.RoleId = payload.RoleId; dispatchReqStatusHistory.CreatedBy = payload.CreatedBy; dispatchReqStatusHistory.CreatedAt = DateTime.Now; _context.DisreqStatusHistory.Add(dispatchReqStatusHistory); _context.SaveChanges(); transaction.Commit(); responseMessage = new ResponseMessage() { Message = "Saved Successfully" }; } catch (Exception ex) { transaction.Rollback(); responseMessage = new ResponseMessage() { Message = "Error was found. Exception : " + ex.Message }; throw ex; } } return(responseMessage); } catch (Exception ex) { 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; } }