Esempio n. 1
0
        public async Task <IActionResult> Update(
            [FromRoute] int trainingId, [FromBody] UpdateTrainingRequest request
            )
        {
            var training = await _trainingService.GetTrainingByIdAsync(trainingId);

            if (training == null)
            {
                return(NotFound());
            }

            if (training.IsPublic)
            {
                return(StatusCode(403, new ErrorResponse("Nie możesz edytować publicznego treningu")));
            }

            var updatedExercise = _mapper.Map(request, training);
            var updated         = await _trainingService.UpdateTrainingAsync(updatedExercise);

            if (!updated)
            {
                return(BadRequest(new ErrorResponse("Wystąpił błąd podczas edytowania")));
            }

            return(Ok());
        }
        public async Task Put__Admin_Or_Moderator_Can_Update_Public_Training()
        {
            string[] users = { "*****@*****.**", "*****@*****.**" };
            int      i     = 1;

            foreach (var user in users)
            {
                await LogInAs(user);

                Training training = await CreatePublicTraining();

                UpdateTrainingRequest request = Factory.Training.UpdateTrainingRequest();
                string updateEndpoint         = ApiRoutes.Training.UpdatePublic.Replace("{trainingId}", training.Id.ToString());

                var response = await Client.PutAsJsonAsync(updateEndpoint, request);

                response.StatusCode.Should().Be(HttpStatusCode.OK);

                var updatedTraining = await Context.Training
                                      .AsNoTracking().FirstOrDefaultAsync(x => x.Id == training.Id);

                updatedTraining.Name.Should().Be(request.Name);
                updatedTraining.Description.Should().Be(request.Description);

                int trainingCount = await Context.Training.AsNoTracking().CountAsync();

                trainingCount.Should().Be(i);
                i++;
            }
        }
        public async Task Put__User_Can_Update_His_Private_Training()
        {
            AuthenticatedUser user = await LogInAs("*****@*****.**");

            Training training = await CreatePrivateTraining(user.Id);

            UpdateTrainingRequest request = Factory.Training.UpdateTrainingRequest();
            string updateEndpoint         = ApiRoutes.Training.Update.Replace("{trainingId}", training.Id.ToString());

            var response = await Client.PutAsJsonAsync(updateEndpoint, request);

            response.StatusCode.Should().Be(HttpStatusCode.OK);

            var updatedTraining = await Context.Training
                                  .AsNoTracking().FirstOrDefaultAsync(x => x.Id == training.Id);

            updatedTraining.Name.Should().Be(request.Name);
            updatedTraining.Description.Should().Be(request.Description);

            int trainingCount = await Context.Training.AsNoTracking().CountAsync();

            trainingCount.Should().Be(1);
            int userTrainingCount = await Context.UserTraining.AsNoTracking().CountAsync();

            userTrainingCount.Should().Be(1);
        }
        public async Task <IActionResult> UpdateTraining([FromBody] UpdateTrainingRequest request)
        {
            var command = new UpdateTrainingCommand(
                id: request.Id,
                runnerId: request.RunnerId,
                timeToDo: request.TimeToDo,
                details: request.Details,
                comments: request.Comments
                );

            await commandSender.SendAsync(command);

            return(Ok());
        }
        public async Task Put__User_Cant_Update_Other_User_Private_Training()
        {
            AuthenticatedUser user = await LogInAs("*****@*****.**");

            Training training = await CreatePrivateTraining(user.Id);

            AuthenticatedUser admin = await LogInAs("*****@*****.**");

            UpdateTrainingRequest request = Factory.Training.UpdateTrainingRequest();
            string updateEndpoint         = ApiRoutes.Training.Update.Replace("{trainingId}", training.Id.ToString());

            var response = await Client.PutAsJsonAsync(updateEndpoint, request);

            response.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }
 public async Task <IActionResult> Update([FromBody] UpdateTrainingRequest request, CancellationToken cancellationToken = default)
 {
     return(Ok(await Mediator.Send(request, cancellationToken)));
 }