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());
        }
Beispiel #2
0
        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());
        }