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); }
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); } }