public IHttpActionResult ApproveRequisition([FromBody] RequisitionMobileViewModel requisition)
        {
            try
            {
                // Update requisition status to Approved
                var req = requisitionService.Get(requisition.RequisitionId);
                req.Status = CustomStatus.Approved;
                requisitionService.Save(req);

                var inventoryList        = (List <Inventory>)inventoryService.GetAll();
                var itemRequisitionList  = itemRequisitionService.GetAllByRequisitionId(requisition.RequisitionId);
                var itemDisbursementList = new List <ItemDisbursement>();

                // Add Disbursement
                var disbursement = new Disbursement()
                {
                    DepartmentId = requisition.DepartmentId,
                    Status       = CustomStatus.ForRetrieval
                };

                //Retrieve all itemDisbursements meant for retrieval
                var allItemDisbursements = (List <ItemDisbursement>)disbursementService.getAllItemDisbursementsByStatus(CustomStatus.ForRetrieval);

                //Allocate itemrequisition details to itemdisbursement
                foreach (var itemReq in itemRequisitionList)
                {
                    var itemDisbursement = new ItemDisbursement()
                    {
                        DisbursementId    = disbursement.Id,
                        ItemId            = itemReq.ItemId,
                        RequestedQuantity = itemReq.Quantity,
                        AvailableQuantity = 0
                    };
                    itemDisbursementList.Add(itemDisbursement);
                }

                disbursementService.Save(disbursement);

                //Allocate available quantity by inventory availability
                List <ItemDisbursement> finalItemDisbursementList = AllocateAvailableQtyAndStatus(itemDisbursementList, inventoryList, allItemDisbursements);
                foreach (var ib in finalItemDisbursementList)
                {
                    itemDisbursementService.Save(ib);
                }
            }
            catch (Exception)
            {
                return(BadRequest("Requisition already approved"));
            }

            return(Ok());
        }
        public IHttpActionResult GetRequisitionDetails([FromBody] RequisitionMobileViewModel viewModel)
        {
            List <ItemRequisition> itemRequisitions = itemRequisitionService.GetAllByRequisitionId(viewModel.RequisitionId).ToList();

            List <RequisitionDetailsMobileViewModel> itemRequsitionViewModel = itemRequisitions.Select(ir => new RequisitionDetailsMobileViewModel()
            {
                ItemCode    = ir.ItemId,
                Description = itemService.Get(ir.ItemId).ItemDescription,
                Quantity    = ir.Quantity
            }).ToList();

            return(Ok(itemRequsitionViewModel));
        }
        public IHttpActionResult RejectRequisition([FromBody] RequisitionMobileViewModel requisition)
        {
            try
            {
                var req = requisitionService.Get(requisition.RequisitionId);
                req.Status = CustomStatus.Cancelled;
                requisitionService.Save(req);
            }
            catch (Exception)
            {
                return(BadRequest("Requisition already approved"));
            }

            return(Ok());
        }