Esempio n. 1
0
        public async Task <ActionResult <IEnumerable <CompanyLightDTO> > > GetSimilarCompanies([FromBody] CompanyFullDTO company, [FromQuery] PaginationQueryDTO model)
        {
            try
            {
                if (company == null || !ModelState.IsValid)
                {
                    _logger.LogTrace("Similar companies search failed to return due to invalid parameters.", company, model);
                    return(BadRequest("Invalid parameters."));
                }

                var user = await _unitOfWork.UserManager.FindVerifiedByNameAsync(User.Identity.Name).ConfigureAwait(false);

                if (user == null)
                {
                    _logger.LogWarning("Company similarity request attempted by unknown or unverified user.");
                    return(StatusCode(500, "Failed to return existing companies."));
                }

                var results = await _unitOfWork.Companies.GetSimilarCompaniesAsync(company, model).ConfigureAwait(false);

                Response.Headers.Add("Total-Count", results.Count.ToString());
                _logger.LogInformation("Returned {count} results for companies similar to {company}", results.Count, company);

                return(Ok(_mapper.Map <IEnumerable <CompanyLightDTO> >(results.Companies)));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Failed to return existing companies.");
                return(StatusCode(500, "Failed to return existing companies."));
            }
        }
Esempio n. 2
0
        public async Task <ActionResult <IEnumerable <ReviewLightDTO> > > GetUserReviews([FromQuery] PaginationQueryDTO model)
        {
            try
            {
                var user = await _unitOfWork.UserManager.FindByNameAsync(User.Identity.Name).ConfigureAwait(false);

                if (user == null)
                {
                    _logger.LogWarning("User attempted to retreive reviews whilst not logged in.");
                    return(BadRequest("User not logged in."));
                }

                var userReviews = await _unitOfWork.Reviews.GetReviewsForUserAsync(user, model).ConfigureAwait(false);

                Response.Headers.Add("Total-Count", userReviews.Count.ToString());

                return(Ok(_mapper.Map <IEnumerable <ReviewLightDTO> >(userReviews.Reviews)));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Exception thrown attempting to get user's reviews.");
                return(StatusCode(500, "Failed to get user's reviews."));
            }
        }
Esempio n. 3
0
        public async Task <ActionResult <IEnumerable <ReviewLightDTO> > > GetCompanyReviews(string id, [FromQuery] PaginationQueryDTO model)
        {
            try
            {
                if (!ModelState.IsValid || string.IsNullOrEmpty(id))
                {
                    _logger.LogTrace("Company reviews failed to return due to invalid parameters.", model);
                    return(BadRequest("Invalid parameters."));
                }

                var results = await _unitOfWork.Reviews.GetReviewsForCompanyAsync((ShortGuid)id, model).ConfigureAwait(false);

                Response.Headers.Add("Total-Count", results.Count.ToString());

                return(Ok(_mapper.Map <IEnumerable <ReviewLightDTO> >(results.Reviews)));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Failed to return company reviews.");
                return(StatusCode(500, "Failed to return company reviews."));
            }
        }