Example #1
0
 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;
            }
        }