Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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."));
        }