public async Task <IActionResult> UpdateDeviceDateType(int id, [FromBody] DeviceDateTypeSaveResource deviceDateTypeSaveResource) { if (!_auth.IsAppAdmin(User)) { return(NoContent()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } /* Test for prexistence */ var filter = new MdaDeviceDateTypeQuery() { Name = deviceDateTypeSaveResource.Name, Active = 2 }; var deviceDateTypeFromRepoExisting = await _repo.GetDeviceDateTypes(filter, true); if (deviceDateTypeFromRepoExisting.Any()) { var existingDDT = deviceDateTypeFromRepoExisting.FirstOrDefault(); if (existingDDT.Id != id) { return(BadRequest($"DateType {deviceDateTypeSaveResource.Name} already exists")); } else { if (existingDDT.Name.ToLower() == deviceDateTypeSaveResource.Name.ToLower()) { if (existingDDT.Active == Convert.ToByte(deviceDateTypeSaveResource.Active == true ? 1 : 0)) { return(BadRequest("Nothing has changed")); } } } } var deviceDateTypeFromRepo = await _repo.GetDeviceDateType(id); if (deviceDateTypeFromRepo == null) { return(BadRequest($"DeviceDateTypeId {id} could not be found")); } _mapper.Map <DeviceDateTypeSaveResource, MdaDeviceDateType>(deviceDateTypeSaveResource, deviceDateTypeFromRepo); deviceDateTypeFromRepo.ModifiedBy = User.Identity.Name; deviceDateTypeFromRepo.ModifiedDate = DateTime.Now; if (await _repo.SaveAll()) { return(NoContent()); } return(BadRequest("Failed to update device date type")); }
public async Task <PagedList <MdaDeviceDateType> > GetDeviceDateTypes(MdaDeviceDateTypeQuery filter, bool exactMatch = false) { var query = _context.MdaDeviceDateType .Include(dd => dd.MdaDeviceDate) .AsQueryable(); // if (filter.PageSize == 0) // filter.PageSize = 10; if (!string.IsNullOrEmpty(filter.Name)) { if (exactMatch) { query = query.Where(t => t.Name.Equals(filter.Name)); } else { query = query.Where(t => t.Name.Contains(filter.Name)); } } 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 <MdaDevice, object> > > { }; // query = query.ApplyOrdering(filter, columnsMap); // query = query.ApplyPaging(filter); // return await query.ToListAsync(); return(await PagedList <MdaDeviceDateType> .CreateAsync(query, filter.Page, filter.PageSize)); }