public async Task <IHttpActionResult> CreateDispatch(AuDispatchModel entity) { userId = User.Identity.GetUserId(); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } // Create the DeleveryNote var newEntity = new DeliveryNoteMaterialAudit() { CreatedById = userId, CreatedOn = DateTime.Now, DeliveryNoteId = entity.DeliveryNoteId, AssignedDriverId = entity.DriverId }; context.DeliveryNoteMaterialAudits.Add(newEntity); await context.SaveChangesAsync(); // Others var deliveryNote = await context.DeliveryNotes.FindAsync(entity.DeliveryNoteId); var deliveryNoteLogs = _repo.FindDeliveryNoteLogByNoteId(deliveryNote.Id); var jobStatusWIP = _repo.FindJobStatusByName("WIP"); var jobStatusCompleted = _repo.FindJobStatusByName("Completed"); var jobStatusQueue = _repo.FindJobStatusByName("Queue"); var jobStatusNotDelivered = _repo.FindJobStatusByName("Not Delivered"); // get all the jobTracker foreach (var m in deliveryNoteLogs) { // Update deliveryNoteLog Status m.AuditStatus = true; var t0 = await UpdateDeliveryNoteLog(m.Id, m); // Update JobTracker var jobTrackerUpdate = await context.JobTrackers.FindAsync(m.JobTrackerId); jobTrackerUpdate.MAudId = jobStatusNotDelivered.Id; jobTrackerUpdate.ModifiedOn = DateTime.Now; var t1 = await UpdateJobTracker(jobTrackerUpdate.Id, jobTrackerUpdate); //Todo: Update the Tracker if job is completed //Check if all itm delivery to make completed } var updateNote = deliveryNote; updateNote.AuditStatus = true; await UpdateDeliveryNote(updateNote.Id, updateNote); return(Ok()); }
public async Task <IHttpActionResult> CreateDispatch(AuDispatchModel entity) { userId = User.Identity.GetUserId(); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var deliveryNote = await context.DeliveryNotes.FindAsync(entity.DeliveryNoteId); var deliveryNoteLogs = _repo.FindDeliveryNoteLogByNoteId(deliveryNote.Id); var jobStatusWIP = _repo.FindJobStatusByName("WIP"); var jobStatusCompleted = _repo.FindJobStatusByName("Completed"); var jobStatusQueue = _repo.FindJobStatusByName("Queue"); var jobStatusNotDelivered = _repo.FindJobStatusByName("Not Delivered"); var jobStatusDelivered = _repo.FindJobStatusByName("Delivered"); // get all the jobTracker foreach (var m in deliveryNoteLogs) { // Update deliveryNoteLog Status m.CustomerServiceStatus = true; var t0 = await UpdateDeliveryNoteLog(m.Id, m); // Update JobTracker //var jobTrackerUpdate = await context.JobTrackers.FindAsync(m.JobTrackerId); var jobTrackerUpdate = await context.JobTrackers.Include(a => a.Job).FirstOrDefaultAsync(b => b.Id == m.JobTrackerId); jobTrackerUpdate.MAudId = jobStatusDelivered.Id; var totalDelivery = m.QuantityDelivered + m.PreviousDelivery + m.Ommitted; if (jobTrackerUpdate.Job.Quantity == totalDelivery) { // Update Job to complete var selectedJob = await context.Jobs.FindAsync(jobTrackerUpdate.JobId); selectedJob.JobStatusId = jobStatusCompleted.Id; var tJob = await UpdateJob(selectedJob.Id, selectedJob); // Update JobTracker jobTrackerUpdate.DispatchId = jobStatusCompleted.Id; jobTrackerUpdate.CustomerServiceId = jobStatusCompleted.Id; jobTrackerUpdate.IsCompleted = true; jobTrackerUpdate.JobStatusId = jobStatusCompleted.Id; } else { jobTrackerUpdate.CustomerServiceId = jobStatusWIP.Id; } //Todo: check if the delivery is completed var t1 = await UpdateJobTracker(jobTrackerUpdate.Id, jobTrackerUpdate); // Create the CS var newEntity = new Sid09CustomerService() { CreatedById = userId, CreatedOn = DateTime.Now, DeliveryNoteLogId = m.Id }; context.Sid09CustomerServices.Add(newEntity); await context.SaveChangesAsync(); } //Update DeliveryNote deliveryNote.CustomerServiceStatus = true; var t2 = await UpdateDeliveryNote(deliveryNote.Id, deliveryNote); return(Ok()); }