Beispiel #1
0
        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);
        }
Beispiel #2
0
 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>());
 }
Beispiel #3
0
        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;
        }
Beispiel #5
0
 public async Task <JobOrder.Model.JobOrder> Submit([FromBody] ScheduleJobOrderParam param,
                                                    Guid userID, string userName, string userEmail)
 {
     return(await _jobOrderService.Create(param, userID, userName, userEmail));
 }
Beispiel #6
0
 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)));
 }