public IHttpActionResult PrepareRequest(int requestPK, string userID, [FromBody] Client_InputPrepareRequestAPI input) { if (new ValidationBeforeCommandDAO().IsValidUser(userID, "Staff")) { IssuingDAO issuingDAO = new IssuingDAO(); StoringDAO storingDAO = new StoringDAO(); BoxDAO boxDAO = new BoxDAO(); IssuingSession issuingSession = null; try { issuingDAO.UpdateRequest(requestPK, true); boxDAO.ChangeIsActiveBoxes(input.boxIDs, false); issuingSession = issuingDAO.CreateIssuingSession(userID, requestPK, input.boxIDs); storingDAO.CreateIssueEntry(input, issuingSession); } catch (Exception e) { if (issuingSession != null) { issuingDAO.UpdateRequest(requestPK, false); boxDAO.ChangeIsActiveBoxes(input.boxIDs, true); issuingDAO.DeleteIssuingSession(issuingSession.IssuingSessionPK); } return(Content(HttpStatusCode.Conflict, new Content_InnerException(e).InnerMessage())); } return(Content(HttpStatusCode.OK, "TẠO YÊU CẦU XUẤT THÀNH CÔNG!")); } else { return(Content(HttpStatusCode.Conflict, "BẠN KHÔNG CÓ QUYỀN ĐỂ THỰC HIỆN VIỆC NÀY!")); } }
public void CreateIssueEntry(Client_InputPrepareRequestAPI input, IssuingSession issuingSession) { try { Entry entry; Accessory accessory; foreach (var item_position_quantity in input.Item_position_quantities) { // lấy hàng cần xuất if (item_position_quantity.IsRestored) { RestoredItem restoredItem = db.RestoredItems.Find(item_position_quantity.ItemPK); accessory = db.Accessories.Find(restoredItem.AccessoryPK); } else { PassedItem passedItem = db.PassedItems.Find(item_position_quantity.ItemPK); ClassifiedItem classifiedItem = db.ClassifiedItems.Find(passedItem.ClassifiedItemPK); PackedItem packedItem = db.PackedItems.Find(classifiedItem.PackedItemPK); OrderedItem orderedItem = db.OrderedItems.Find(packedItem.OrderedItemPK); accessory = db.Accessories.Find(orderedItem.AccessoryPK); } // tạo entry xuất trong n - thùng chưa hàng foreach (var item in item_position_quantity.BoxAndQuantity) { StoredBox sBox = db.StoredBoxes.Find(item.StoredBoxPK); if (sBox == null) { throw new Exception("Data StoreBoxes Lỗi!"); } entry = new Entry(sBox, "Issuing", issuingSession.IssuingSessionPK, item_position_quantity.IsRestored, item.Quantity, item_position_quantity.ItemPK, accessory); db.Entries.Add(entry); } } db.SaveChanges(); } catch (Exception e) { throw e; } }