public async Task <IActionResult> Edit(int id) { var userId = await _identityService.GetUserIdByNameAsync(User.Identity.Name); var animalCommand = new GetAnimalQuery { Id = id, UserId = userId, AnotherUser = false }; var model = await _mediator.Send(animalCommand); if (model == null) { return(RedirectToAction("Index", "Profile")); } var animalViewModel = new AnimalViewModel { Id = model.Id, UserId = model.UserId, Nickname = model.Nickname, Passport = model.Passport, Kind = model.Kind, Breed = model.Breed, Features = model.Features, IsPublic = model.IsPublic }; return(View(animalViewModel)); }
/// <summary> /// Страница для получения информации о выбранном животном. /// </summary> /// <param name="id">Идентификатор.</param> /// <returns>Определенное представление.</returns> public async Task <IActionResult> Info(int id) { var userId = await _identityService.GetUserIdByNameAsync(User.Identity.Name); var animalQuery = new GetAnimalQuery { Id = id, UserId = userId, AnotherUser = false }; var userAnimal = await _mediator.Send(animalQuery); if (userAnimal == null) { return(RedirectToAction("Index", "Profile")); } var qrQuery = new GetQRCodeQuery { AnimalId = userAnimal.Id }; QRCodeDTO qrCode = await _mediator.Send(qrQuery); var code = _QRCodeGeneratorService.CreateQRCode(qrCode.Code); var animalViewModel = new AnimalViewModel { Id = userAnimal.Id, UserId = userAnimal.UserId, Kind = userAnimal.Kind, Breed = userAnimal.Breed, Gender = userAnimal.Gender.ToString(), Passport = userAnimal.Passport, BirthDate = userAnimal.BirthDate, Nickname = userAnimal.Nickname, Features = userAnimal.Features, IsPublic = userAnimal.IsPublic, Link = qrCode.Code, Code = code }; _logger.LogInformation($"For {User.Identity.Name} successfully showed animal with id: {userAnimal.Id}."); return(View(animalViewModel)); }
public async Task Handle_WhenIsNotAnotherUser_ReturnsCorrectAnimalDTO() { // Arrange var animal = new AnimalDTO { Id = 1, UserId = "QWERTY1234567890_One", Kind = "Kind_One", Breed = "Breed_One", Gender = GenderTypes.None, Passport = "1234567890QWERTY_One", BirthDate = new DateTime(2001, 01, 01), Nickname = "Nickname_One", Features = "Features_One", IsPublic = true }; var query = new GetAnimalQuery { Id = 1, UserId = string.Empty, AnotherUser = true }; // Act var handler = new GetAnimalQuery.GetAnimalQueryHandler(Context, Mapper); var result = await handler.Handle(query, CancellationToken.None); // Assert result.ShouldBeOfType <AnimalDTO>(); result.ShouldNotBeNull(); result.Id.ShouldBe(animal.Id); result.UserId.ShouldBe(animal.UserId); result.Kind.ShouldBe(animal.Kind); result.Breed.ShouldBe(animal.Breed); result.Gender.ShouldBe(animal.Gender); result.Passport.ShouldBe(animal.Passport); result.BirthDate.ShouldBe(animal.BirthDate); result.Nickname.ShouldBe(animal.Nickname); result.Features.ShouldBe(animal.Features); result.IsPublic.ShouldBe(animal.IsPublic); }
public async Task Handle_GivenInvalidId_ReturnsCorrectAnimalDTO() { // Arrange var query = new GetAnimalQuery { Id = 99, UserId = string.Empty, AnotherUser = true }; // Act var handler = new GetAnimalQuery.GetAnimalQueryHandler(Context, Mapper); var result = await handler.Handle(query, CancellationToken.None); // Assert result.ShouldBeNull(); }
public async Task <IActionResult> Public(int id) { var animalQuery = new GetAnimalQuery { Id = id, AnotherUser = true }; var userAnimal = await _mediator.Send(animalQuery); if (userAnimal == null || !userAnimal.IsPublic) { return(View("PermissionDenied")); } var qrQuery = new GetQRCodeQuery { AnimalId = userAnimal.Id }; QRCodeDTO qrCodeText = await _mediator.Send(qrQuery); var code = _QRCodeGeneratorService.CreateQRCode(qrCodeText.Code); var animalViewModel = new AnimalViewModel { Id = userAnimal.Id, UserId = userAnimal.UserId, Kind = userAnimal.Kind, Breed = userAnimal.Breed, Gender = userAnimal.Gender.ToString(), Passport = userAnimal.Passport, BirthDate = userAnimal.BirthDate, Nickname = userAnimal.Nickname, Features = userAnimal.Features, IsPublic = userAnimal.IsPublic, Code = code }; _logger.LogInformation($"Animal with id: {userAnimal.Id}, successfully showed on public request."); return(View(animalViewModel)); }
public async Task Animal_GetQuery_Success() { //Arrange GetAnimalQuery query = new GetAnimalQuery(); _animalRepository.Setup(x => x.GetAsync(It.IsAny <Expression <Func <Animal, bool> > >())) .ReturnsAsync(new Animal() { AnimalId = 1, AnimalName = "Test" }); GetAnimalQueryHandler handler = new GetAnimalQueryHandler(_animalRepository.Object); //Act var x = await handler.Handle(query, new System.Threading.CancellationToken()); //Asset Assert.That(x.Success, Is.True); Assert.That(x.Data.AnimalId, Is.EqualTo(1)); }
public async Task <GetAnimalByIdResponse> Handle(GetAnimalByIdRequest request, CancellationToken cancellationToken) { var query = new GetAnimalQuery() { Id = request.AnimalId }; var animal = await _queryExecutor.Execute(query); if (animal == null) { return(new GetAnimalByIdResponse() { Error = new ErrorModel(ErrorType.NotFound) }); } var mappedAnimal = _mapper.Map <Domain.Models.Animal>(animal); return(new GetAnimalByIdResponse() { Data = mappedAnimal }); }
public async Task <Animal> GetAnimal( [FromRoute] GetAnimalQuery query) { return(await Mediator.Send(query)); }