public override async Task <int> HandleCommand(UpdateCommand request, CancellationToken cancellationToken) { if (request.Shipping == null || request.Shipping.Id == 0) { throw new BusinessException("AddWrongInformation"); } var shipping = await cFShippingQueries.Get(request.Shipping.Id); if (shipping == null) { throw new BusinessException("Trip.NotExisted"); } if (shipping.StatusId != (int)Distributions.UI.TripStatuses.Created) { throw new BusinessException("Common.ErrorWithStep"); } var employee = await WebHelper.HttpGet <Employee>(GlobalConfiguration.APIGateWayURI, AppUrl.GetEmployeeByUser, request.LoginSession.AccessToken); if (employee == null) { throw new NotPermissionException(); } var collection = (await collectionQueries.GetsByEmployeeId(employee.Id)).FirstOrDefault(c => c.Id == shipping.CollectionId); if (collection == null) { throw new NotPermissionException(); } shipping = UpdateBuild(shipping, request.LoginSession); shipping.FulfillmentId = request.Shipping.FulfillmentId; shipping.VehicleId = request.Shipping.VehicleId; shipping.ShipperId = request.Shipping.ShipperId; shipping.DeliveryDate = request.Shipping.DeliveryDate; return(await cFShippingRepository.Update(shipping)); }
public override async Task <int> HandleCommand(UpdateItemCommand request, CancellationToken cancellationToken) { if (request.ShippingId == 0 || request.Items == null && request.Items.Count == 0) { throw new BusinessException("AddWrongInformation"); } var shipping = await cFShippingQueries.Get(request.ShippingId); if (shipping == null) { throw new BusinessException("Trip.NotExisted"); } if (shipping.StatusId != (int)Distributions.UI.TripStatuses.Created) { throw new BusinessException("Common.ErrorWithStep"); } var employee = await WebHelper.HttpGet <Employee>(GlobalConfiguration.APIGateWayURI, AppUrl.GetEmployeeByUser, request.LoginSession.AccessToken); if (employee == null) { throw new NotPermissionException(); } var collection = (await collectionQueries.GetsByEmployeeId(employee.Id)).FirstOrDefault(c => c.Id == shipping.CollectionId); if (collection == null) { throw new NotPermissionException(); } var rs = -1; using (var conn = DALHelper.GetConnection()) { conn.Open(); using (var tran = conn.BeginTransaction()) { try { await cFShippingRepository.DeleteItems(shipping.Id); foreach (var item in request.Items) { if (item.ShippedQuantity == 0) { throw new BusinessException(""); } item.ShippingId = shipping.Id; item.DeliveriedQuantity = 0; await cFShippingRepository.AddItem(item); } shipping = UpdateBuild(shipping, request.LoginSession); rs = await cFShippingRepository.Update(shipping); } finally { if (rs == 0) { tran.Commit(); } else { try { tran.Rollback(); } catch { } } } } } return(rs); }
public override async Task <int> HandleCommand(AddFcCommand request, CancellationToken cancellationToken) { if (request.FulfillmentCollection == null || request.FulfillmentCollection.ID == 0) { throw new BusinessException("AddWrongInformation"); } var rs = -1; using (var conn = DALHelper.GetConnection()) { conn.Open(); using (var trans = conn.BeginTransaction()) { try { fulfillmentRepository.JoinTransaction(conn, trans); ////Add flu-col request.FulfillmentCollection = CreateBuild(request.FulfillmentCollection, request.LoginSession); request.FulfillmentCollection.StatusId = request.FulfillmentCollection.StatusFulCols.FirstOrDefault().Id; var rsFulCol = await fulfillmentRepository.Add(request.FulfillmentCollection); if (rsFulCol >= 0) { //Add flu_col_item if (request.FulfillmentCollection.Items.Count != 0 && request.FulfillmentCollection.StatusFulCols.FirstOrDefault().Id != 2) { foreach (var fcItems in request.FulfillmentCollection.Items) { fcItems.ShippingId = rsFulCol; rs = (await fulfillmentRepository.AddItems(fcItems) > 0) ? 0 : -1;; } } if (rs != -1) { //Update status cf_shipping var itemUp = await cFShippingQueries.Get(request.FulfillmentCollection.ID); if (itemUp != null) { itemUp.StatusId = 4; var cf_shpping = await iCFShippingRepository.Update(itemUp); } } } } finally { if (rs == 0) { trans.Commit(); } else { try { trans.Rollback(); } catch { } } } } } return(rs); }
public override async Task <int> HandleCommand(UpdateStatusCommand request, CancellationToken cancellationToken) { if (request.ShippingId == 0 || request.StatusId == 0) { throw new BusinessException("AddWrongInformation"); } if (!Enum.IsDefined(typeof(TripStatuses), (int)request.StatusId)) { throw new BusinessException("Trip.NotExistedStatus"); } var status = (TripStatuses)request.StatusId; var shipping = await cFShippingQueries.Get(request.ShippingId); if (shipping == null) { throw new BusinessException("Trip.NotExisted"); } if (shipping.StatusId == (int)TripStatuses.Finished || shipping.StatusId == (int)TripStatuses.Canceled) { throw new BusinessException("Trip.WrongStep"); } if (status != TripStatuses.Canceled) { if (request.StatusId != shipping.StatusId + 1) { throw new BusinessException("Trip.WrongStep"); } } if (status == TripStatuses.Confirmed || (status == TripStatuses.Canceled && shipping.StatusId != (int)TripStatuses.Created)) { var employee = await WebHelper.HttpGet <Employee>(GlobalConfiguration.APIGateWayURI, UI.AppUrl.GetEmployeeByUser, request.LoginSession.AccessToken); if (employee == null) { throw new NotPermissionException(); } var collection = (await collectionQueries.GetsByEmployeeId(employee.Id)).FirstOrDefault(c => c.Id == shipping.CollectionId); if (collection == null) { throw new NotPermissionException(); } if (status == TripStatuses.Confirmed && shipping.ShipperId == null) { throw new BusinessException("Distribution.Trip.RequiredDeliveryMan"); } using (var conn = DALHelper.GetConnection()) { conn.Open(); using (var trans = conn.BeginTransaction()) { var rs = -1; try { cFShippingQueries.JoinTransaction(conn, trans); cFShippingRepository.JoinTransaction(conn, trans); collectionInventoryQueries.JoinTransaction(conn, trans); collectionInventoryHistoryRepository.JoinTransaction(conn, trans); var items = await cFShippingQueries.GetItems(shipping.Id); if (items.Count() == 0) { throw new BusinessException("Collection.Shipping.NotExsitedItem"); } foreach (var item in items) { var inventory = await collectionInventoryQueries.GetByTraceCode(item.TraceCode); if (status == TripStatuses.Confirmed) { if (inventory == null || inventory.CollectionId != shipping.CollectionId) { throw new BusinessException("Collection.Inventory.TraceCode.NotExisted"); } if (inventory.Quantity < item.ShippedQuantity) { throw new BusinessException("Collection.Inventory.TraceCode.NotEnoughQuantity"); } inventory.Quantity -= item.ShippedQuantity; if (inventory.Quantity == 0) { await collectionInventoryRepository.Delete(inventory.Id); } else { inventory.ModifiedDate = DateTime.Now; inventory.ModifiedBy = request.LoginSession.Id; await collectionInventoryRepository.Update(inventory); } await collectionInventoryHistoryRepository.Add(new MDM.UI.Collections.Models.CollectionInventoryHistory() { TraceCode = inventory.TraceCode, CollectionId = inventory.CollectionId, ProductId = inventory.ProductId, UoMId = inventory.UoMId, Direction = 0, Quantity = item.ShippedQuantity, LastQuantity = inventory.Quantity, CreatedDate = DateTime.Now, CreatedBy = request.LoginSession.Id }); } else { if (inventory == null) { await collectionInventoryRepository.Add(new MDM.UI.Collections.Models.CollectionInventory() { CollectionId = shipping.CollectionId, ProductId = item.ProductId, UoMId = item.UoMId, TraceCode = item.TraceCode, Quantity = item.ShippedQuantity, ModifiedBy = request.LoginSession.Id, ModifiedDate = DateTime.Now }); } else { inventory.Quantity += item.ShippedQuantity; inventory.ModifiedDate = DateTime.Now; inventory.ModifiedBy = request.LoginSession.Id; await collectionInventoryRepository.Update(inventory); } await collectionInventoryHistoryRepository.Add(new MDM.UI.Collections.Models.CollectionInventoryHistory() { TraceCode = item.TraceCode, CollectionId = shipping.CollectionId, ProductId = item.ProductId, UoMId = item.UoMId, Direction = 1, Quantity = item.ShippedQuantity, LastQuantity = inventory == null ? item.ShippedQuantity : item.ShippedQuantity + inventory.Quantity, CreatedDate = DateTime.Now, CreatedBy = request.LoginSession.Id }); } } shipping = UpdateBuild(shipping, request.LoginSession); shipping.StatusId = request.StatusId; return(rs = await cFShippingRepository.Update(shipping)); } finally { if (rs == 0) { trans.Commit(); } else { try { trans.Rollback(); } catch { } } } } } } else { shipping = UpdateBuild(shipping, request.LoginSession); shipping.StatusId = request.StatusId; return(await cFShippingRepository.Update(shipping)); } }