-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
84cc09f
commit 5e7d50a
Showing
8 changed files
with
91 additions
and
104 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,68 +1,20 @@ | ||
using Booking.Application.Dtos; | ||
using MediatR; | ||
using Microsoft.AspNetCore.Authorization; | ||
using Microsoft.AspNetCore.Mvc; | ||
using ReviewCommands = Booking.Application.Actions.Reviews.Commands; | ||
|
||
[ApiController] | ||
[Route("api/v1/reviews")] | ||
public class ReviewsController : ControllerBase | ||
public class ReviewsController( | ||
IMediator mediator | ||
) : ControllerBase | ||
{ | ||
private readonly List<ReviewDto> mockReviews; | ||
|
||
public ReviewsController() | ||
{ | ||
var author = new UserDto | ||
{ | ||
Id = Guid.NewGuid().ToString(), | ||
Avatar = "", | ||
Name = "Cyril", | ||
Initials = "Cy", | ||
Email = "cyril@morozov.com", | ||
PhoneNumber = "+380000000000" | ||
}; | ||
mockReviews = new List<ReviewDto> | ||
{ | ||
new ReviewDto | ||
{ | ||
Id = Guid.NewGuid().ToString(), | ||
Stars = 1, | ||
Description = "Это была ловушка сдесь охотиться СВЕТА. Она буквально заманивает людей в секс рабство.", | ||
Author = author | ||
}, | ||
new ReviewDto | ||
{ | ||
Id = Guid.NewGuid().ToString(), | ||
Stars = 2, | ||
Description = "Это было просто восхитительно когда владелец дома встретил нас с бутылкой шампанского холел бы я сказать но нас встретили с ведром дерьма в ебало. После этого на нас были спущены бомжы которые стоят на страже этого поместья. Особенно хочеться отметить бомжыгу Светлану которая не просто отпиздила и оставила нас умирать в холодной луже с дерьмом но также и позаботилась о том что бы эта лужа говна поплнялась каждые 2 минуты до того момента пока мы не захлебнемся в дерьме. Можно сказать что нам сказачно повезло что наш хозяин Светлана(та самая бомжиха) которая согласилась нас приютить в замент на небольшую помошь по дому. Радует что Светлана сразу обозначила правила совмесного проживания в ёё великолепной 2 комнотной коробки от холодильника, она сразу дала понять что она сдесь главная по этому мы называем ёё хозяин и помогаем ей во все что она хочет ведь она подарила нам самое главное и дорогое для нас ЖИЗНЬ.", | ||
Author = author | ||
}, | ||
new ReviewDto | ||
{ | ||
Id = Guid.NewGuid().ToString(), | ||
Stars = 3, | ||
Description = "Был обычный день когда я спонтанно решила прогруляться по прекрасному городу Педоград. Как вдруг изза угла выехал черный грузовик уже через мгновение я была в темном месте, вскоре я осознала что это была коробка от холодильника. Через довольно долгий промежуток времени меня выбросили в месте с моим будущим домом коробкой выбросили у поместья невообразимых масштабов. Уже через неделю я потеряла человечность и начала охотиться на людей. Я стала главарем бомжей в своем районе. Также мне удалось споймать двух рабов (они приехали по объявлению о оренде жилья) они вежливо называют меня хозяин. Я принцыпе мне понравилось это объявление я все рекомендую.", | ||
Author = author | ||
}, | ||
new ReviewDto | ||
{ | ||
Id = Guid.NewGuid().ToString(), | ||
Stars = 4, | ||
Description = "Светлана просто великолепна.", | ||
Author = author | ||
}, | ||
new ReviewDto | ||
{ | ||
Id = Guid.NewGuid().ToString(), | ||
Stars = 5, | ||
Description = "Света 5 звезд.", | ||
Author = author | ||
}, | ||
}; | ||
} | ||
|
||
[HttpGet] | ||
public async Task<IActionResult> GetAll( | ||
[FromQuery] string advertId | ||
) | ||
[HttpPost] | ||
[Authorize] | ||
public async Task<IActionResult> Create( | ||
[FromForm] ReviewCommands.Create.Request request) | ||
{ | ||
return Ok(mockReviews); | ||
await mediator.Send(request); | ||
return NoContent(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
server/Booking.Application/Actions/Reviews/Commands/CommandsHandlers.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
using AutoMapper; | ||
using Booking.Application.Errors; | ||
using Booking.Core.Common; | ||
using Booking.Core.Entities; | ||
using MediatR; | ||
using Microsoft.AspNetCore.Http; | ||
using System.Security.Claims; | ||
|
||
namespace Booking.Application.Actions.Reviews.Commands; | ||
|
||
public class CommandsHandlers( | ||
IUnitOfWork unitOfWork, | ||
IMapper mapper, | ||
IHttpContextAccessor httpContextAccessor | ||
) : IRequestHandler<Create.Request> | ||
{ | ||
private HttpContext Context => httpContextAccessor.HttpContext; | ||
|
||
public Task Handle(Create.Request request, CancellationToken cancellationToken) | ||
{ | ||
var userId = Context.User.FindFirstValue(ClaimTypes.NameIdentifier); | ||
var user = unitOfWork.Users.GetById(userId); | ||
|
||
if (unitOfWork.Adverts.GetById(request.AdvertId) is not Advert advert) | ||
throw new BookingError( | ||
BookingErrorType.NOT_FOUND, | ||
"Advert with given id is not found" | ||
); | ||
|
||
var review = Review.Create(request.Description, request.Stars, user, advert); | ||
unitOfWork.Reviews.Create(review); | ||
unitOfWork.SaveChanges(); | ||
return Task.CompletedTask; | ||
} | ||
} |
5 changes: 5 additions & 0 deletions
5
server/Booking.Application/Actions/Reviews/Commands/Create/Request.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
using MediatR; | ||
|
||
namespace Booking.Application.Actions.Reviews.Commands.Create; | ||
|
||
public record Request(string AdvertId, string Description, int Stars) : IRequest; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
using AutoMapper; | ||
using Booking.Application.Dtos; | ||
using Booking.Core.Entities; | ||
|
||
namespace Booking.Application.Profiles; | ||
|
||
internal class ReviewProfile : Profile | ||
{ | ||
public ReviewProfile() | ||
{ | ||
CreateMap<Review, ReviewDto>(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters