public async Task <IActionResult> AddAssignment([FromBody] DeviceAssignmentSaveResource saveResource) { if (!_auth.IsValidUser(User)) { return(NoContent()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (await _deviceRepo.GetDevice(saveResource.DeviceId) == null) { return(BadRequest($"Device {saveResource.DeviceId} could not be found.")); } if (await _assigneeRepo.GetAssignee(saveResource.AssigneeId) == null) { return(BadRequest($"Assignee {saveResource.AssigneeId} could not be found.")); } var filter = new MdaAssignmentQuery() { DeviceId = saveResource.DeviceId, AssignmentType = saveResource.AssignmentType, AssigneeId = saveResource.AssigneeId }; var assigmentFromRepo = await _repo.GetAssignments(filter); if (assigmentFromRepo.Any()) { return(BadRequest($"Assignment already exists.")); } var assignment = _mapper.Map <MdaDeviceAssignment>(saveResource); assignment.CreatedBy = User.Identity.Name; if (saveResource.StartDate == DateTime.MinValue) { assignment.StartDate = DateTime.Now; } _repo.Add(assignment); if (await _repo.SaveAll()) { return(Ok(assignment)); } return(BadRequest("Failed to add assignment")); }
public async Task <PagedList <MdaDeviceAssignment> > GetAssignments(MdaAssignmentQuery filter) { var query = _context.MdaDeviceAssignment .Include(dv => dv.Device) .ThenInclude(p => p.Product) .ThenInclude(pm => pm.ProductModel) .ThenInclude(pma => pma.ProductManufacturer).IgnoreQueryFilters() .Include(dv => dv.Device) .ThenInclude(p => p.Product) .ThenInclude(pc => pc.ProductCapacity).IgnoreQueryFilters() .Include(dv => dv.Device) .ThenInclude(s => s.Sim).IgnoreQueryFilters() .Include(da => da.MdaDeviceAssignee).ThenInclude(d => d.Department).IgnoreQueryFilters() .AsQueryable(); if (filter.PageSize == 0) { filter.PageSize = 10; } if (filter.DeviceId.HasValue) { query = query.Where(da => da.DeviceId == filter.DeviceId); } if (filter.AssignmentType.HasValue) { query = query.Where(da => da.AssignmentType == filter.AssignmentType); } if (filter.AssigneeId.HasValue) { query = query.Where(da => da.AssigneeId == filter.AssigneeId); } if (filter.StartDate.HasValue) { if (filter.EndDate.HasValue) { query = query.Where(da => da.StartDate >= filter.StartDate && da.EndDate <= filter.EndDate); } else { query = query.Where(da => da.StartDate >= filter.StartDate); } } else if (filter.EndDate.HasValue) { query = query.Where(da => da.EndDate <= filter.EndDate); } var columnsMap = new Dictionary <string, Expression <Func <MdaDeviceAssignment, object> > > { }; query = query.ApplyOrdering(filter, columnsMap); // query = query.ApplyPaging(filter); // return await query.ToListAsync(); return(await PagedList <MdaDeviceAssignment> .CreateAsync(query, filter.Page, filter.PageSize)); }
public async Task <IActionResult> UpdateAssignment(int id, [FromBody] DeviceAssignmentSaveResource saveResource) { if (!_auth.IsValidUser(User)) { return(NoContent()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var assignmentFromRepo = await _repo.GetAssignment(id); if (assignmentFromRepo == null) { return(BadRequest($"Assignment {id} could not be found.")); } if (await _deviceRepo.GetDevice(saveResource.DeviceId) == null) { return(BadRequest($"Device {saveResource.DeviceId} could not be found.")); } if (await _assigneeRepo.GetAssignee(saveResource.AssigneeId) == null) { return(BadRequest($"Assignee {saveResource.AssigneeId} could not be found.")); } var filter = new MdaAssignmentQuery() { DeviceId = saveResource.DeviceId, AssignmentType = saveResource.AssignmentType, AssigneeId = saveResource.AssigneeId }; var assigmentFromRepoExisting = await _repo.GetAssignments(filter); if (assigmentFromRepoExisting.Any()) { var existingAssignment = assigmentFromRepoExisting.FirstOrDefault(); if (existingAssignment.Id != id) { return(BadRequest($"Assignment already exists.")); } else { if (existingAssignment.DeviceId == saveResource.DeviceId && existingAssignment.AssignmentType == saveResource.AssignmentType && existingAssignment.AssigneeId == saveResource.AssigneeId) { return(BadRequest("Nothing was changed.")); } } } _mapper.Map <DeviceAssignmentSaveResource, MdaDeviceAssignment>(saveResource, assignmentFromRepo); assignmentFromRepo.ModifiedBy = User.Identity.Name; assignmentFromRepo.ModifiedDate = DateTime.Now; if (saveResource.StartDate == DateTime.MinValue) { assignmentFromRepo.StartDate = DateTime.Now; } if (await _repo.SaveAll()) { return(NoContent()); } return(BadRequest("Failed to update Assignment.")); }