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.")); } }
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.")); } }
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.")); } }