Select Git revision
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
SearchController.cs 13.90 KiB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Coscine.ApiCommons;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Microsoft.AspNetCore.Authorization;
using Coscine.Database.Util;
using Microsoft.Extensions.Logging;
using Coscine.Database.Models;
using Coscine.Logging;
namespace Coscine.Api.Project.Controllers
{
/// <summary>
/// This controller represents the actions which can be taken with a search object
/// </summary>
[Authorize]
public class SearchController : Controller
{
private readonly Authenticator _authenticator;
private readonly ProjectRoleModel _projectRoleModel;
private readonly CoscineLogger _coscineLogger;
private readonly AnalyticsLogObject _analyticsLogObject;
/// <summary>
/// SearchController specifying a ProjectRoleModel and an AnalyticsObject
/// </summary>
/// <param name="logger">Logger</param>
public SearchController(ILogger<SearchController> logger)
{
_authenticator = new Authenticator(this, Program.Configuration);
_projectRoleModel = new ProjectRoleModel();
_coscineLogger = new CoscineLogger(logger);
_analyticsLogObject = new AnalyticsLogObject();
}
/// <summary>
/// Searchs no filter
/// </summary>
/// <returns>Ok</returns>
[HttpGet("[controller]/allNoFilter/")]
public IActionResult SearchNoFilter()
{
var user = _authenticator.GetUser();
return Ok(GetSearchResults(user.Id, "", ""));
}
/// <summary>
/// Returns results for the search word
/// </summary>
/// <param name="encodedSearchWord">Encoded search word</param>
/// <returns>Ok</returns>
[HttpGet("[controller]/all/{encodedSearchWord}")]
public IActionResult Search(string encodedSearchWord)
{
var user = _authenticator.GetUser();
return Ok(GetSearchResults(user.Id, encodedSearchWord, ""));
}
/// <summary>
/// Returns searched projects with no filter
/// </summary>
/// <param name="projectId">Id of the project</param>
/// <returns>Ok</returns>
[HttpGet("[controller]/projectNoFilter/{projectId}")]