public IHttpActionResult PostDispatchProgress(PalletDispatchProgress progress)
        {
            var terminal = TerminalServices.GetTerminalBySerial(progress.SerialNo);

            if (terminal == null)
            {
                return(Unauthorized());
            }

            var TransactionLog = TerminalServices.CheckTransactionLog(progress.TransactionLogId, terminal.TerminalId);

            if (TransactionLog == true)
            {
                return(Conflict());
            }

            var result = _palletService.UpdateDispatchProgress(progress, progress.CreatedBy);

            return(Ok(result));
        }
Ejemplo n.º 2
0
        public PalletDispatchProgress UpdateDispatchProgress(PalletDispatchProgress currentDispatch, int userId)
        {
            int?resourceId = _userService.GetResourceIdByUserId(userId);

            if (resourceId == 0)
            {
                resourceId = null;
            }

            var dispatch = _currentDbContext.PalletsDispatches.Find(currentDispatch.DispatchId);

            dispatch.DispatchStatus = currentDispatch.DispatchStatus;
            dispatch.DateUpdated    = DateTime.UtcNow;
            dispatch.UpdatedBy      = userId;
            dispatch.ReceiverName   = currentDispatch.ReceiverName;


            if (currentDispatch.ReceiverSign != null && currentDispatch.DispatchStatus == PalletDispatchStatusEnum.Delivered)
            {
                var filePath = HttpContext.Current.Server.MapPath("~/UploadedFiles/DispatchSign/");
                var filename = Guid.NewGuid().ToString() + ".png";
                var bw       = new BinaryWriter(File.Open(filePath + filename, FileMode.OpenOrCreate));
                bw.Write(currentDispatch.ReceiverSign);
                bw.Close();
                dispatch.ReceiverSign = filename;
            }

            _currentDbContext.Entry(dispatch).State = EntityState.Modified;
            _currentDbContext.SaveChanges();

            foreach (var palletId in currentDispatch.ScannedPalletSerials)
            {
                var pallet = _currentDbContext.Pallets.Find(palletId);

                if (pallet != null)
                {
                    pallet.DateCompleted = DateTime.UtcNow;
                    pallet.DateUpdated   = DateTime.UtcNow;
                    pallet.CompletedBy   = userId;
                    _currentDbContext.Entry(pallet).State = EntityState.Modified;

                    if (currentDispatch.DispatchStatus == PalletDispatchStatusEnum.Loaded)
                    {
                        pallet.ScannedOnLoading = true;
                        pallet.LoadingScanTime  = DateTime.UtcNow;
                    }
                    else if (currentDispatch.DispatchStatus == PalletDispatchStatusEnum.Delivered)
                    {
                        pallet.ScannedOnDelivered = true;
                        pallet.DeliveredScanTime  = DateTime.UtcNow;
                    }

                    _currentDbContext.SaveChanges();
                }
            }

            //update order process status
            var orderProcess = _currentDbContext.OrderProcess.Find(dispatch.OrderProcessID);

            if (currentDispatch.DispatchStatus == PalletDispatchStatusEnum.Loaded)
            {
                orderProcess.OrderProcessStatusId = 4;
                orderProcess.DateUpdated          = DateTime.UtcNow;
            }
            else if (currentDispatch.DispatchStatus == PalletDispatchStatusEnum.Delivered)
            {
                orderProcess.OrderProcessStatusId = 5;
                orderProcess.DateUpdated          = DateTime.UtcNow;
            }
            _currentDbContext.Entry(orderProcess).State = EntityState.Modified;
            _currentDbContext.SaveChanges();

            return(currentDispatch);
        }