public async Task Can_add_Requisition()
        {
            const int    REQUISITION      = 3;
            const string SITE_MANAGER_ID  = "EMP1";
            const string SUPPLIER_CODE    = "SP1";
            const string SITE_CODE        = "SITE001";
            const string SHIPPING_ADDRESS = "MALABE";
            const double TOTAL_COST       = 2000.00;
            const string STATUS           = "PENDING";
            const string COMMENTS         = "Immediate Request";

            string[] ITEMS = { "IT001", "IT001", "IT002", "IT002", "IT002", "IT003" };

            using (var context = new ProcurementDbContext(ContextOptions))
            {
                PurchaseRequisitionsController requisitionsController = new PurchaseRequisitionsController(context);

                var requisition = new PurchaseRequisitionDTO {
                    SiteManagerId = SITE_MANAGER_ID, SupplierCode = SUPPLIER_CODE, SiteCode = SITE_CODE, ShippingAddress = SHIPPING_ADDRESS, TotalCost = TOTAL_COST, Status = STATUS, Comments = COMMENTS, ItemIds = ITEMS
                };

                var result = await requisitionsController.PostPurchaseRequisition(requisition);

                var viewResult   = Assert.IsType <ActionResult <PurchaseRequisition> >(result);
                var actionResult = Assert.IsType <CreatedAtActionResult>(viewResult.Result);
                var model        = Assert.IsType <PurchaseRequisition>(actionResult.Value);
                Assert.Equal(REQUISITION, model.RequisitionNo);
            }
        }
Пример #2
0
        public async Task <ActionResult <PurchaseRequisition> > PostPurchaseRequisition(PurchaseRequisitionDTO purchaseRequisitionDTO)
        {
            SiteManager siteManager = _context.SiteManagers.FirstOrDefault(e => e.StaffId == purchaseRequisitionDTO.SiteManagerId);
            Supplier    supplier    = _context.Supplier.FirstOrDefault(e => e.SupplierCode == purchaseRequisitionDTO.SupplierCode);
            Site        site        = _context.Sites.FirstOrDefault(e => e.SiteCode == purchaseRequisitionDTO.SiteCode);

            PurchaseRequisition purchaseRequisition = new PurchaseRequisition
            {
                ShippingAddress = purchaseRequisitionDTO.ShippingAddress,
                DeliverBefore   = purchaseRequisitionDTO.DeliverBefore,
                DeliveryCost    = purchaseRequisitionDTO.DeliveryCost,
                TotalCost       = purchaseRequisitionDTO.TotalCost,
                Status          = purchaseRequisitionDTO.Status,
                Comments        = purchaseRequisitionDTO.Comments,
                SiteManager     = siteManager,
                Supplier        = supplier,
                Site            = site
            };

            var itemMap = new Dictionary <string, int>();

            foreach (string itemId in purchaseRequisitionDTO.ItemIds)
            {
                if (itemMap.ContainsKey(itemId))
                {
                    itemMap[itemId] = itemMap[itemId] + 1;
                }
                else
                {
                    itemMap.Add(itemId, 1);
                }
            }

            for (int i = 0; i < itemMap.Count; i++)
            {
                var item = new PurchaseRequisitionItems {
                    ItemId = itemMap.ElementAt(i).Key, PurchaseRequisition = purchaseRequisition, ItemCount = itemMap.ElementAt(i).Value
                };

                _context.Set <PurchaseRequisitionItems>().Add(item);
            }

            _context.PurchaseRequisitions.Add(purchaseRequisition);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetPurchaseRequisition", new { id = purchaseRequisition.RequisitionNo }, purchaseRequisition));
        }