public async Task <JobOrder> ScheduleInspection(long id, DateTimeOffset scheduledOn, DateTimeOffset scheduledOnTo, string notes, Officer officer) { var request = await _apiClient.RequestSdk.GetByID(id); var customer = await _apiClient.CustomerSdk.GetByID(request.CustomerID); var premise = request.Premises.First(e => e.IsPrimary); var lineItems = new List <JobOrderLineItem>(); foreach (var reqLineItem in request.LineItems) { var checklist = _apiClient.ChecklistSdk.GetLatest(reqLineItem.Scheme.Value); lineItems.Add(new JobOrderLineItem { Scheme = reqLineItem.Scheme.Value, SubScheme = reqLineItem.SubScheme, ChecklistHistoryID = checklist.Id }); } var person = request.AgentID != null ? await _apiClient.PersonSdk.GetByID(request.AgentID.Value) : await _apiClient.PersonSdk.GetByID(request.RequestorID); var email = person.ContactInfos?.Where(e => e.Type == ContactInfoType.Email) .FirstOrDefault()?.Value; var jobOrder = new ScheduleJobOrderParam { RefID = id, Type = JobOrderType.Audit, Status = JobOrderStatus.Pending, ScheduledOn = scheduledOn, ScheduledOnTo = scheduledOnTo, Notes = notes, Customer = customer, Email = email, Officer = new Officer { ID = officer.ID, Name = officer.Name }, Premises = new List <Premise> { premise }, LineItems = lineItems }; jobOrder = await _apiClient.JobOrderSdk.Submit(jobOrder); await _apiClient.RequestSdk.ScheduledInspection(id, jobOrder.ID, notes, scheduledOn, scheduledOnTo); return(jobOrder); }
public async Task <ScheduleJobOrderParam> Submit(ScheduleJobOrderParam jobOrder) { return(await _requestProvider.BuildUpon(_url) .BaseURL(_url) .Uri($"/api/joborder") .Method(HttpMethod.Post) .Content(new JsonContent(jobOrder)) .AddInterceptor(new JsonDeserializerInterceptor()) .Execute <ScheduleJobOrderParam>()); }
public async Task <long> ScheduleInspection(long caseID, CaseScheduleInspectionParam data, Officer officer) { var @case = await _apiClient.CaseSdk.GetCaseByID(caseID); var premise = @case.Premises.Where(x => x.ID == data.PremiseID).FirstOrDefault(); var lineItems = new List <JobOrderLineItem>(); var certificates = @case.Certificates.Where(x => x.PremiseID == data.PremiseID).GroupBy(x => x.Scheme).Select(x => x.FirstOrDefault()).ToList(); foreach (var caseLineItem in certificates) { var checklist = _apiClient.ChecklistSdk.GetLatest(caseLineItem.Scheme); lineItems.Add(new JobOrderLineItem { Scheme = caseLineItem.Scheme, SubScheme = caseLineItem.SubScheme, ChecklistHistoryID = checklist.Id }); } var jobOrder = new ScheduleJobOrderParam { RefID = caseID, Type = data.Type, Status = JobOrderStatus.Pending, ScheduledOn = data.ScheduledOn, ScheduledOnTo = data.ScheduledOnTo, Notes = data.Notes, Officer = new Officer { ID = officer.ID, Name = officer.Name }, Customer = new Model.Customer { ID = @case.Offender.ID, Name = @case.Offender.Name }, Premises = new List <Premise> { premise }, LineItems = lineItems }; data.JobOrderID = (await _apiClient.JobOrderSdk.Submit(jobOrder)).ID; var result = await _apiClient.CaseSdk.ScheduleInspection(caseID, data); return(result); }
public CreateJobOrderCommand(ScheduleJobOrderParam param, Guid userID, string userName, string userEmail, IEventBus eventBus, IEmailService emailService, ISmtpProvider smtpProvider) { _param = param; _userID = userID; _userName = userName; _userEmail = userEmail; _eventBus = eventBus; _emailService = emailService; _smtpProvider = smtpProvider; }
public async Task <JobOrder.Model.JobOrder> Submit([FromBody] ScheduleJobOrderParam param, Guid userID, string userName, string userEmail) { return(await _jobOrderService.Create(param, userID, userName, userEmail)); }
public async Task <Model.JobOrder> Create(ScheduleJobOrderParam param, Guid userID, string userName, string userEmail) { return(await Execute(new CreateJobOrderCommand(param, userID, userName, userEmail, _eventBus, _emailService, _smtpProvider))); }