示例#1
0
        public PalletSync DispatchPalletsFromHandheld(PalletSync currentDispatch, int userId)
        {
            int?resourceId = _userService.GetResourceIdByUserId(userId);

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

            var item = new PalletsDispatch
            {
                CompletedBy                   = userId,
                MarketVehicleID               = currentDispatch.PalletDispatchInfo.MarketVehicleID,
                VehicleDriverResourceID       = resourceId,
                ProofOfDeliveryImageFilenames = currentDispatch.PalletDispatchInfo.ProofOfDeliveryImageFilenames,
                DispatchNotes                 = currentDispatch.PalletDispatchInfo.DispatchNotes,
                CreatedBy         = userId,
                DateCreated       = DateTime.UtcNow,
                TrackingReference = currentDispatch.PalletDispatchInfo.TrackingReference,
                SentMethodID      = currentDispatch.PalletDispatchInfo.SentMethodID > 0 ? currentDispatch.PalletDispatchInfo.SentMethodID : (int?)null,
                DateCompleted     = currentDispatch.DateCompleted,
                DispatchStatus    = PalletDispatchStatusEnum.Created,
                OrderProcessID    = currentDispatch.OrderProcessID
            };

            if (item.MarketVehicleID < 1)
            {
                var vehicle = _marketServices.GetMarketVehicleByVehicleNumber(currentDispatch.PalletDispatchInfo.VehicleIdentifier);
                if (vehicle == null)
                {
                    vehicle = _marketServices.SaveMarketVehicle(new MarketVehicle()
                    {
                        CreatedBy         = userId,
                        TenantId          = currentDispatch.TenantId,
                        DateCreated       = currentDispatch.DateCreated,
                        Name              = currentDispatch.PalletDispatchInfo.CustomVehicleModel,
                        VehicleIdentifier = currentDispatch.PalletDispatchInfo.VehicleIdentifier
                    }, userId);
                }
                item.MarketVehicleID = vehicle.Id;
            }

            _currentDbContext.PalletsDispatches.Add(item);
            _currentDbContext.SaveChanges();

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

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

                    UpdatePalletProof(pallet.PalletNumber, currentDispatch.ProofOfLoadingImageBytes);
                }
            }

            currentDispatch.IsDispatched  = true;
            currentDispatch.CompletedBy   = userId;
            currentDispatch.DateCompleted = DateTime.UtcNow;

            //update order process status to dispatched as well
            var orderProcess = _currentDbContext.OrderProcess.Find(currentDispatch.OrderProcessID);

            orderProcess.OrderProcessStatusId           = (int)OrderProcessStatusEnum.Dispatched;
            orderProcess.DateUpdated                    = DateTime.UtcNow;
            orderProcess.UpdatedBy                      = userId;
            _currentDbContext.Entry(orderProcess).State = EntityState.Modified;
            _currentDbContext.SaveChanges();

            currentDispatch.PalletDispatchInfo = AutoMapper.Mapper.Map <PalletsDispatch, PalletDispatchSync>(item);

            return(currentDispatch);
        }
示例#2
0
        public PalletsDispatch DispatchPallets(PalletDispatchViewModel dispatch, int userId)
        {
            if (dispatch.PalletDispatchId > 0)
            {
                var item = _currentDbContext.PalletsDispatches.FirstOrDefault(u => u.PalletsDispatchID == dispatch.PalletDispatchId);
                if (item != null)
                {
                    item.MarketVehicleID               = dispatch.MarketVehicleID;
                    item.VehicleDriverResourceID       = dispatch.MarketVehicleDriverID;
                    item.ProofOfDeliveryImageFilenames = dispatch.ProofOfDeliveryImageFilenames;
                    item.DispatchNotes     = dispatch.DispatchNotes;
                    item.DispatchReference = dispatch.DispatchRefrenceNumber;
                    item.UpdatedBy         = userId;
                    item.DateUpdated       = DateTime.UtcNow;
                    item.TrackingReference = dispatch.TrackingReference;
                    item.SentMethodID      = dispatch.SentMethodID > 0 ? dispatch.SentMethodID : (int?)null;
                    _currentDbContext.Entry(item).State = EntityState.Modified;
                    _currentDbContext.SaveChanges();
                }

                return(item);
            }
            else
            {
                var item = new PalletsDispatch
                {
                    CompletedBy                   = userId,
                    MarketVehicleID               = dispatch.MarketVehicleID,
                    VehicleDriverResourceID       = dispatch.MarketVehicleDriverID,
                    ProofOfDeliveryImageFilenames = dispatch.ProofOfDeliveryImageFilenames,
                    DispatchNotes                 = dispatch.DispatchNotes,
                    DispatchReference             = dispatch.DispatchRefrenceNumber,
                    CreatedBy         = userId,
                    DateCreated       = DateTime.UtcNow,
                    OrderProcessID    = int.Parse(!string.IsNullOrEmpty(dispatch.DispatchSelectedPalletIds) ? dispatch.DispatchSelectedPalletIds : "0"),
                    TrackingReference = dispatch.TrackingReference,
                    SentMethodID      = dispatch.SentMethodID > 0 ? dispatch.SentMethodID : (int?)null,
                    DateCompleted     = DateTime.UtcNow,
                    DispatchStatus    = PalletDispatchStatusEnum.Created
                };
                _currentDbContext.PalletsDispatches.Add(item);
                if (!string.IsNullOrEmpty(dispatch.DispatchSelectedPalletIds))
                {
                    int OrderProcessId = int.Parse(dispatch.DispatchSelectedPalletIds);
                    var PalletList     = _currentDbContext.Pallets.Where(u => u.OrderProcessID == OrderProcessId).ToList();
                    var orderProcess   = _currentDbContext.OrderProcess.FirstOrDefault(u => u.OrderProcessID == OrderProcessId);

                    foreach (var palletId in PalletList)
                    {
                        var pallet = _currentDbContext.Pallets.Find(palletId.PalletID);
                        if (pallet != null && pallet.PalletProducts.Count > 0)
                        {
                            pallet.DateCompleted   = DateTime.UtcNow;
                            pallet.DateUpdated     = DateTime.UtcNow;
                            pallet.CompletedBy     = userId;
                            pallet.PalletsDispatch = item;


                            _currentDbContext.Entry(pallet).State = EntityState.Modified;
                        }
                    }
                    if (orderProcess != null)
                    {
                        orderProcess.OrderProcessStatusId           = (int)OrderProcessStatusEnum.Dispatched;
                        orderProcess.DateUpdated                    = DateTime.UtcNow;
                        orderProcess.UpdatedBy                      = userId;
                        _currentDbContext.Entry(orderProcess).State = EntityState.Modified;
                    }
                }
                _currentDbContext.SaveChanges();
                return(item);
            }
        }