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());
        }
Beispiel #2
0
        public ActionResult Details(string id)
        {
            var r   = requisitionService.Get(id);
            var irs = itemRequisitionService.GetAllByRequisitionId(id);
            var requisitionViewModel = new RequisitionViewModel
            {
                Id               = r.Id,
                Department       = r.Department,
                createdDateTime  = r.createdDateTime,
                Status           = r.Status,
                Remark           = r.Remark,
                ItemRequisitions = irs
            };

            return(View("Details", requisitionViewModel));
        }
Beispiel #3
0
        public async Task <IActionResult> GetRequisition(Guid id)
        {
            try
            {
                var requisition = await _requisitionService.Get(id);

                if (requisition == null)
                {
                    return(NotFound());
                }

                return(Ok(requisition));
            }
            catch (Exception e)
            {
                return(StatusCode(500, new JsonResult(new { message = e.Message })));
            }
        }