public async Task <IActionResult> Allocate(NewTaskAllocationRequestDto dto)
        {
            var user = User.Claims
                       .FirstOrDefault(c => c.Type.Equals("sub") && c.Issuer.Equals("https://localhost:5002"));
            var office = User.Claims
                         .FirstOrDefault(c => c.Type.Equals("office") && c.Issuer.Equals("https://localhost:5002"));

            if (user != null)
            {
                dto.AssignedBy = Guid.Parse(user.Value);
            }
            else
            {
                return(NotFound());
            }
            dto.DateAssigned = DateTime.Now;
            if (office != null)
            {
                dto.SortingOffice = Convert.ToInt32(office.Value);
            }
            else
            {
                return(NotFound());
            }

            var multipleApplicationTask = await _taskApiClientService.PostMultipleApplicationTaskAsync(dto);

            if (multipleApplicationTask != null)
            {
                return(Ok(multipleApplicationTask));
            }

            return(BadRequest("Could not allocate"));
        }
Example #2
0
        private async System.Threading.Tasks.Task AllocateMultipleApplicationsAsync(NewTaskAllocationRequestDto dto)
        {
            var dtoService   = (EService)dto.Service;
            var applications = await _context.Applications.Where(a =>
                                                                 a.Service == dtoService &&
                                                                 a.CityId.Equals(dto.SortingOffice) &&
                                                                 a.TaskId == null)
                               .Take(dto.NumberOfApplications)
                               .ToListAsync();

            var task = _mapper.Map <ExaminationTask>(dto);

            foreach (var application in applications)
            {
                if (application.Service == EService.NameSearch)
                {
                    application.ExaminationTask = task;
                    application.Status          = EApplicationStatus.Assigned;
                }

                if (application.Service == EService.PrivateLimitedCompany)
                {
                    if (application.Status == EApplicationStatus.Submitted)
                    {
                        application.ExaminationTask = task;
                        application.Status          = EApplicationStatus.Assigned;
                    }
                }
            }
        }
Example #3
0
        private async System.Threading.Tasks.Task AllocateSingleApplicationAsync(NewTaskAllocationRequestDto dto)
        {
            var application = await _context.Applications.SingleAsync(a =>
                                                                      a.ApplicationId.Equals(dto.ApplicationId) &&
                                                                      a.CityId.Equals(dto.SortingOffice) &&
                                                                      a.TaskId == null);

            application.ExaminationTask = _mapper.Map <ExaminationTask>(dto);
            application.Status          = EApplicationStatus.Assigned;
        }
        public async Task <int?> PostMultipleApplicationTaskAsync(NewTaskAllocationRequestDto dto)
        {
            var response = await _client.PostAsJsonAsync("applications/allocate", dto);

            if (response.IsSuccessStatusCode)
            {
                return(await response.Content.ReadAsAsync <int>());
            }

            return(null);
        }
Example #5
0
        public async Task <int> AllocateTasksAsync(NewTaskAllocationRequestDto dto)
        {
            if (dto.ApplicationId > 0)
            {
                await AllocateSingleApplicationAsync(dto);
            }
            else
            {
                await AllocateMultipleApplicationsAsync(dto);
            }

            await _context.SaveChangesAsync();

            return(await _context.Applications.CountAsync(a =>
                                                          a.Service.Equals(dto.Service) && a.CityId.Equals(dto.SortingOffice) && a.TaskId.Equals(null)));
        }
Example #6
0
 public async Task <IActionResult> AllocateApplicationsToExaminer([FromBody] NewTaskAllocationRequestDto dto)
 {
     return(Created("", await _taskService.AllocateTasksAsync(dto)));
 }