Beispiel #1
0
        public async Task <bool> Handle(SearchCompanyRequest message, IOutputPort <SearchCompanyResponse> outputPort)
        {
            var response = await _companyRepository.Search(message);

            outputPort.Handle(response.Success ? new SearchCompanyResponse(response.Result, true) : new SearchCompanyResponse(response.Errors));
            return(response.Success);
        }
Beispiel #2
0
        public async Task <SearchCompanyResponse> Search(SearchCompanyRequest searchRequest)
        {
            List <Entities.CompanyEntity> QueryResult;
            List <string> errors = new List <string>();

            using (var tran = _session.BeginTransaction())
            {
                IQueryable <CompanyEntity> result = _session.Query <CompanyEntity>();

                //note: i intepreted given task as a result must meet ALL given criteria not ANY of them so here's solution for that logic
                if (searchRequest.Keyword != null)
                {
                    result = searchByKeyword(result, searchRequest.Keyword);
                }

                if (searchRequest.EmployeeDateOfBirthFrom != null && searchRequest.EmployeeDateOfBirthTo != null)
                {
                    result = searchByBirthdayRange(result, searchRequest.EmployeeDateOfBirthFrom.GetValueOrDefault(),
                                                   searchRequest.EmployeeDateOfBirthTo.GetValueOrDefault());
                }
                if (searchRequest.EmployeeJobTitles != null || searchRequest.EmployeeJobTitles.Count != 0)
                {
                    result = searchByTitles(result, searchRequest.EmployeeJobTitles);
                }


                QueryResult = await result.ToListAsync();
            }

            var domainMappedResult = _mapper.Map <List <Core.Domain.Entities.Company> >(QueryResult);

            return(new SearchCompanyResponse(domainMappedResult, true));
        }
Beispiel #3
0
        public async Task <IActionResult> Find([FromQuery] SearchCompanyRequest model)
        {
            var result = await mediator.Send(new FindCompanyQuery(model.SearchPhrase));

            if (result == null)
            {
                return(NotFound());
            }

            return(Ok(result));
        }
 public override async Task <UpsertCompanyResponse> DeleteCompany(SearchCompanyRequest request, ServerCallContext context)
 {
     if (_companyService.Delete(request.CompanyId))
     {
         _logger.LogInformation("company deleted");
         return(new UpsertCompanyResponse
         {
             Status = StatusCode.Ok,
             Message = "kompanija je uspesno obrisana"
         });
     }
     _logger.LogError("company can't be deleted");
     return(new UpsertCompanyResponse
     {
         Status = StatusCode.Error,
         Message = "kompaniju nije moguce obrisati"
     });
 }