Skip to content
This repository was archived by the owner on Mar 1, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion Recademy.Api/Controllers/ReviewsController.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Recademy.Api.Attributes;
using Recademy.Application.Services.Abstractions;
using Recademy.Dto.Reviews;
Expand All @@ -10,6 +11,7 @@ namespace Recademy.Api.Controllers;

[Route("api/reviews")]
[ApiController]
[Authorize]
public class ReviewsController : Controller
{
private readonly IReviewService _reviewService;
Expand Down Expand Up @@ -45,6 +47,7 @@ public ActionResult<ReviewRequestInfoDto> GetReviewRequestById(int requestId)
return Ok(reviewRequest);
}

[AllowAnonymous]
[HttpPost("requests")]
public async Task<ActionResult<ReviewRequestInfoDto>> CreateReviewRequest(CreateReviewRequestDto createReviewRequestDto)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
@page "/reviews"
@using Recademy.Dto.Projects
@using Recademy.Dto.Reviews
@using Newtonsoft.Json
@inject HttpClient Http
@inject IBlazorStrap BlazorStrap

<BSToaster />

<h3>Запрос на ревью</h3>

<BSLabel MarginTop="Margins.Small">Название проекта</BSLabel>
<BSInput InputType="InputType.Text" @bind-Value="_projectTitle" />

<BSLabel MarginTop="Margins.Small">Описание проекта</BSLabel>
<BSInput InputType="InputType.Text" @bind-Value="_projectDescription" />

<BSLabel MarginTop="Margins.Small">Ссылка на проект</BSLabel>
<BSInput InputType="InputType.Text" @bind-Value="_projectLink" />

<BSLabel MarginTop="Margins.Small">Комментарий</BSLabel>
<BSInput InputType="InputType.Text" @bind-Value="_comment" />

<BSButton Color="BSColor.Primary" @onclick="SendReviewRequest" MarginTopAndBottom="Margins.Medium">Отправить запрос</BSButton>

@code {
private string _comment;
private string _projectTitle;
private string _projectDescription;
private string _projectLink;

protected override Task OnInitializedAsync()
{
return Task.CompletedTask;
}

private async Task SendReviewRequest()
{
//Create project with default userId (I assume we add it beforehand)
var createProjectRequest = new CreateProjectDto
(
AuthorId: 1,
Title: _projectTitle,
Description: _projectDescription,
Link: _projectLink,
new List<string>()
);

var createProjectRequestResponse = await Http.PostAsJsonAsync($"api/projects", createProjectRequest);

if (createProjectRequestResponse.IsSuccessStatusCode)
{
BlazorStrap.Toaster.Add($"Проект {createProjectRequest.Title} успешно добавлен", o =>
{
o.Color = BSColor.Success;
o.CloseAfter = 3000;
o.Toast = Toast.BottomRight;
});

var newProject = await createProjectRequestResponse.Content.ReadAsStringAsync();
ProjectInfoDto projectInfoDto = JsonConvert.DeserializeObject<ProjectInfoDto>(newProject);

// TODO: add validation on input
var request = new CreateReviewRequestDto
{
UserId = projectInfoDto.UserId,
ProjectId = projectInfoDto.ProjectId,
Comment = _comment,
};

var response = await Http.PostAsJsonAsync($"api/reviews/requests", request);

if (response.IsSuccessStatusCode)
{
BlazorStrap.Toaster.Add("Запрос на ревью успешно создан", o =>
{
o.Color = BSColor.Success;
o.CloseAfter = 3000;
o.Toast = Toast.BottomRight;
});
}
else
{
// TODO: show more suitable error (for example that review was already requested)
BlazorStrap.Toaster.Add("Произошла ошибка при отправке запроса на ревью", o =>
{
o.Color = BSColor.Danger;
o.CloseAfter = 3000;
o.Toast = Toast.BottomRight;
});
}
}
else
{
BlazorStrap.Toaster.Add("Произошла ошибка при добавлении проекта", o =>
{
o.Color = BSColor.Danger;
o.CloseAfter = 3000;
o.Toast = Toast.BottomRight;
});
}

_projectTitle = default;
_projectDescription = default;
_projectLink = default;
_comment = default;
}
}
1 change: 1 addition & 0 deletions Recademy.WebUi/Recademy.WebUi.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<PackageReference Include="BlazorStrap" Version="5.0.106" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="6.0.8" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="6.0.8" PrivateAssets="all" />
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
</ItemGroup>

<ItemGroup>
Expand Down
5 changes: 5 additions & 0 deletions Recademy.WebUi/Shared/NavMenu.razor
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
<span class="oi oi-plus" aria-hidden="true"></span> Достижения
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="reviews">
<span class="oi oi-plus" aria-hidden="true"></span> Ревью
</NavLink>
</div>
</nav>
</div>

Expand Down