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); } }
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)); }