public async Task <IEnumerable <MdaProduct> > GetAllProducts(MdaProductQuery filter) { var query = _context.MdaProduct .Include(m => m.ProductModel).ThenInclude(m => m.ProductManufacturer) .Include(m => m.ProductModel).ThenInclude(m => m.ProductType) .Include(c => c.ProductCapacity) .AsQueryable(); if (filter.ProductTypeId.HasValue) { query = query.Where(l => l.ProductModel.ProductTypeId == filter.ProductTypeId); } if (filter.Active == 0) { query = query.Where(d => d.Active == 0); } if (filter.Active == 1) { query = query.Where(d => d.Active == 1); } var columnsMap = new Dictionary <string, Expression <Func <MdaProduct, object> > > { ["productManufacturerName"] = a => a.ProductModel.ProductManufacturer.Name, ["productModelName"] = a => a.ProductModel.Name }; query = query.ApplyOrdering(filter, columnsMap); return(await query.ToListAsync()); }
public async Task <IActionResult> AddProduct([FromBody] ProductSaveResource saveResource) { if (!_auth.IsAppAdmin(User)) { return(NoContent()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } /* Pre-existence Test */ var filter = new MdaProductQuery() { PartNum = saveResource.PartNum, Active = 2 }; var productFromRepo = await _repo.GetProducts(filter); if (productFromRepo.Any()) { return(BadRequest($"Product with Part Number {saveResource.PartNum} already exists.")); } var product = _mapper.Map <MdaProduct>(saveResource); product.CreatedBy = User.Identity.Name; _repo.Add(product); if (await _repo.SaveAll()) { return(Ok(product)); } return(BadRequest("Failed to add product")); }
public async Task <PagedList <MdaProduct> > GetProducts(MdaProductQuery filter) { var query = _context.MdaProduct .Include(m => m.ProductModel).ThenInclude(m => m.ProductManufacturer) .Include(m => m.ProductModel).ThenInclude(m => m.ProductType) .Include(c => c.ProductCapacity) .Include(d => d.MdaDevice) .IgnoreQueryFilters() .AsQueryable(); // if (filter.PageSize == 0) // filter.PageSize = 10; if (!string.IsNullOrEmpty(filter.PartNum)) { query = query.Where(p => p.PartNum.Contains(filter.PartNum)); } if (filter.ProductCapacityId.HasValue) { query = query.Where(pc => pc.ProductCapacityId == filter.ProductCapacityId); } if (!string.IsNullOrEmpty(filter.ProductCapacityName)) { query = query.Where(pc => pc.ProductCapacity.Name == filter.ProductCapacityName); } if (filter.ProductModelId.HasValue) { query = query.Where(pm => pm.ProductModelId == filter.ProductModelId); } if (filter.ProductManufacturerId.HasValue) { query = query.Where(pmf => pmf.ProductModel.ProductManufacturer.Id == filter.ProductManufacturerId); } if (filter.ProductTypeId.HasValue) { query = query.Where(pt => pt.ProductModel.ProductType.Id == filter.ProductTypeId); } if (filter.Active == 0) { query = query.Where(d => d.Active == 0); } if (filter.Active == 1) { query = query.Where(d => d.Active == 1); } var columnsMap = new Dictionary <string, Expression <Func <MdaProduct, object> > > { }; query = query.ApplyOrdering(filter, columnsMap); // query = query.ApplyPaging(filter); // return await query.ToListAsync(); return(await PagedList <MdaProduct> .CreateAsync(query, filter.Page, filter.PageSize)); }
public async Task <IActionResult> UpdateProduct(int id, [FromBody] ProductSaveResource saveResource) { if (!_auth.IsAppAdmin(User)) { return(NoContent()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } /* Existence Test */ var productFromRepo = await _repo.GetProduct(id); if (productFromRepo == null) { return(BadRequest($"Product {id} could not be found.")); } /* Pre-existence Test */ var filter = new MdaProductQuery() { PartNum = saveResource.PartNum, Active = 2 }; var productFromRepoExisting = await _repo.GetProducts(filter); if (productFromRepoExisting.Any()) { var existingProduct = productFromRepoExisting.FirstOrDefault(); if (existingProduct.Id != id) { return(BadRequest($"Product with Part Number {saveResource.PartNum} already exists.")); } else { if (existingProduct.PartNum == saveResource.PartNum && existingProduct.ProductModelId == saveResource.ProductModelId && existingProduct.ProductCapacityId == saveResource.ProductCapacityId) { if (existingProduct.Active == Convert.ToByte(saveResource.Active == true ? 1 : 0)) { return(BadRequest("Nothing was changed.")); } } } } _mapper.Map <ProductSaveResource, MdaProduct>(saveResource, productFromRepo); productFromRepo.ModifiedBy = User.Identity.Name; productFromRepo.ModifiedDate = DateTime.Now; if (await _repo.SaveAll()) { return(NoContent()); } return(BadRequest("Failed to update Product.")); }