public async Task UpdateJobOrder(Model.JobOrder model) { var param = new DynamicParameters(); param.Add("@ID", model.ID); param.Add("@RefID", model.RefID); param.Add("@Type", model.Type); param.Add("@Status", model.Status); param.Add("@Notes", model.Notes); param.Add("@CustomerID", model.Customer.ID); param.Add("@OfficerID", model.Officer?.ID); param.Add("@OfficerName", model.Officer?.Name); param.Add("@TargetDate", model.TargetDate); param.Add("@ScheduledOn", model.ScheduledOn); param.Add("@ScheduledOnTo", model.ScheduledOnTo); param.Add("@ContactPersonID", model.ContactPersonID); await SqlMapper.ExecuteAsync(_unitOfWork.Connection, "UpdateJobOrder", param, commandType : CommandType.StoredProcedure, transaction : _unitOfWork.Transaction); }
public Model.JobOrder Map(Model.JobOrder joborder, JobOrderLineItem lineitem = null, Premise premise = null, Customer customer = null, Person person = null, ContactInfo contactInfo = null, Attendee attendee = null, Officer officer = null, Attachment attachment = null, Officer invitee = null, Log log = null, Findings findings = null, Officer findingsOfficer = null, FindingsLineItem findingsLineItem = null, Attachment findingsLineItemAttachment = null, Attachment signature = null) { if (!dict.TryGetValue(joborder.ID, out Model.JobOrder result)) { dict[joborder.ID] = joborder; if (!string.IsNullOrEmpty(officer?.Name)) { joborder.Officer = officer; } if (!string.IsNullOrEmpty(customer?.Name)) { joborder.Customer = customer; } result = joborder; } if ((lineitem?.ID ?? 0) > 0 && !_liCache.ContainsKey(lineitem.ID)) { _liCache[lineitem.ID] = lineitem; if (result.LineItems == null) { result.LineItems = new List <JobOrderLineItem>(); } result.LineItems.Add(lineitem); } if ((premise?.ID ?? 0) > 0 && (result.Premises?.FirstOrDefault(e => e.ID == premise.ID) == null)) { if (result.Premises == null) { result.Premises = new List <Premise>(); } result.Premises.Add(premise); } if ((attendee?.ID ?? 0) > 0 && !_attendeeCache.ContainsKey(attendee.ID)) { _attendeeCache[attendee.ID] = attendee; if (result.Attendees == null) { result.Attendees = new List <Attendee>(); } result.Attendees.Add(attendee); } if ((log?.ID ?? 0) > 0 && !_logCache.ContainsKey(log.ID)) { _logCache[log.ID] = log; if (result.Logs == null) { result.Logs = new List <Log>(); } result.Logs.Add(log); } if (!string.IsNullOrEmpty(invitee?.Name) && result.Invitees?.FirstOrDefault(e => e.ID == invitee.ID) == null) { if (result.Invitees == null) { result.Invitees = new List <Officer>(); } result.Invitees.Add(invitee); } Findings outFindings = null; if ((findings?.ID ?? 0) > 0 && !_findingsCache.TryGetValue(findings.ID, out outFindings)) { _findingsCache[findings.ID] = findings; if (result.Findings == null) { result.Findings = new List <Findings>(); } if (!string.IsNullOrEmpty(findingsOfficer?.Name)) { findings.Officer = findingsOfficer; } if ((signature?.ID ?? 0) > 0) { findings.Attachment = signature; } result.Findings.Add(findings); outFindings = findings; } FindingsLineItem outFindingsLineItem = null; if ((findingsLineItem?.ID ?? 0) > 0 && !_findingsLineItemCache.TryGetValue(findingsLineItem.ID, out outFindingsLineItem)) { _findingsLineItemCache[findingsLineItem.ID] = findingsLineItem; if (outFindings.LineItems == null) { outFindings.LineItems = new List <FindingsLineItem>(); } outFindings.LineItems.Add(findingsLineItem); outFindingsLineItem = findingsLineItem; } if ((findingsLineItemAttachment?.ID ?? 0) > 0 && !_findingsLineItemAttachmentCache.ContainsKey(findingsLineItemAttachment.ID)) { _findingsLineItemAttachmentCache[findingsLineItemAttachment.ID] = findingsLineItemAttachment; if (outFindingsLineItem.Attachments == null) { outFindingsLineItem.Attachments = new List <Attachment>(); } outFindingsLineItem.Attachments.Add(findingsLineItemAttachment); } Person outContactPerson = null; if (person?.ID != null && person.ID != Guid.Empty && !_personCache.TryGetValue(person.ID, out outContactPerson)) { _personCache[person.ID] = person; outContactPerson = person; } result.ContactPerson = outContactPerson; if ((contactInfo?.ID ?? 0L) != 0L && !_contactInfoCache.ContainsKey(contactInfo.ID)) { _contactInfoCache[contactInfo.ID] = contactInfo; if (outContactPerson.ContactInfos == null) { outContactPerson.ContactInfos = new List <ContactInfo>(); } outContactPerson.ContactInfos.Add(contactInfo); } return(result); }
public async Task <long> InsertJobOrder(Model.JobOrder model) { var param = new DynamicParameters(); param.Add("@RefID", model.RefID); param.Add("@Type", model.Type); param.Add("@Status", model.Status); param.Add("@Notes", model.Notes); param.Add("@CustomerID", model.Customer.ID); param.Add("@CustomerName", model.Customer.Name); param.Add("@CustomerCode", model.Customer.Code); param.Add("@OfficerID", model.Officer?.ID); param.Add("@OfficerName", model.Officer?.Name); param.Add("@TargetDate", model.TargetDate); param.Add("@ScheduledOn", model.ScheduledOn); param.Add("@ScheduledOnTo", model.ScheduledOnTo); param.Add("@ContactPersonID", model.ContactPerson?.ID); param.Add("@ID", dbType: DbType.Int64, direction: ParameterDirection.Output); await SqlMapper.ExecuteAsync(_unitOfWork.Connection, "InsertJobOrder", param, commandType : CommandType.StoredProcedure, transaction : _unitOfWork.Transaction); var result = param.Get <long>("@ID"); if (model.LineItems?.Any() ?? false) { foreach (var lineItem in model.LineItems) { var lparam = new DynamicParameters(); lparam.Add("@Scheme", lineItem.Scheme); lparam.Add("@SubScheme", lineItem.SubScheme); lparam.Add("@ChecklistHistoryID", lineItem.ChecklistHistoryID); lparam.Add("@JobID", result); lparam.Add("@ID", dbType: DbType.Int64, direction: ParameterDirection.Output); await SqlMapper.ExecuteAsync(_unitOfWork.Connection, "InsertJobOrderLineItem", lparam, commandType : CommandType.StoredProcedure, transaction : _unitOfWork.Transaction); } } if (model.Premises?.Any() ?? false) { var premises = new DataTable(); premises.Columns.Add("A", typeof(long)); premises.Columns.Add("B", typeof(long)); foreach (var premise in model.Premises) { var premParam = new DynamicParameters(); premParam.Add("@ID", premise.ID); premParam.Add("@IsLocal", premise.IsLocal); premParam.Add("@Name", premise.Name); premParam.Add("@Type", premise.Type); premParam.Add("@Area", premise.Area); premParam.Add("@Schedule", premise.Schedule); premParam.Add("@BlockNo", premise.BlockNo); premParam.Add("@UnitNo", premise.UnitNo); premParam.Add("@FloorNo", premise.FloorNo); premParam.Add("@BuildingName", premise.BuildingName); premParam.Add("@Address1", premise.Address1); premParam.Add("@Address2", premise.Address2); premParam.Add("@City", premise.City); premParam.Add("@Province", premise.Province); premParam.Add("@Country", premise.Country); premParam.Add("@Postal", premise.Postal); premParam.Add("@Latitude", premise.Latitude); premParam.Add("@Longtitude", premise.Longitude); premParam.Add("@Grade", null); premParam.Add("@IsHighPriority", null); await SqlMapper.ExecuteAsync(_unitOfWork.Connection, "InsertOrReplacePremise", premParam, commandType : CommandType.StoredProcedure, transaction : _unitOfWork.Transaction); premises.Rows.Add(result, premise.ID); } var premisesParam = new DynamicParameters(); premisesParam.Add("@IDMappingType", premises.AsTableValuedParameter("dbo.IDMappingType")); await SqlMapper.ExecuteAsync(_unitOfWork.Connection, "InsertJobOrderPremises", premisesParam, commandType : CommandType.StoredProcedure, transaction : _unitOfWork.Transaction); } return(result); }