Exemplo n.º 1
0
        public async Task <IActionResult> Change([FromRoute] Guid bucketlistId, [FromBody] BucketListUpdateModel updateModel)
        {
            var(_, isFailure, result, error) = await _bucketListService.UpdateBucketList(bucketlistId, updateModel);

            if (isFailure)
            {
                return(BadRequest(error));
            }
            return(Ok());
        }
        public async Task UpdateInvalidBucketList()
        {
            //Arrange
            Guid bucketId    = Guid.NewGuid();
            var  updateModel = new BucketListUpdateModel()
            {
                Name = "bucketlist test"
            };

            //Act
            var response = await HttpClient.PutAsJsonAsync($"/api/v1/bucketlists/{bucketId}/activities", updateModel);

            //Assert
            response.IsSuccessStatusCode.Should().BeFalse();
        }
        public async Task UpdateBucketList()
        {
            //Arrange
            var        activityType = ActivityTypeFactory.Default();
            var        city         = CityFactory.Default();
            var        activity     = ActivityFactory.Default(city.Id, activityType.Id);
            BucketList bucket       = null;
            var        updateModel  = new BucketListUpdateModel()
            {
                Name = "bucketlist test",
                ActivitiesForDelete = new List <Guid>(),
                ActivitiesForToggle = new List <Guid>()
            };

            await ExecuteDatabaseAction(async (doFestContext) =>
            {
                bucket = await doFestContext
                         .BucketLists
                         .FirstOrDefaultAsync(x => x.UserId == AuthenticatedUserId);
                await doFestContext.Cities.AddAsync(city);
                await doFestContext.ActivityTypes.AddAsync(activityType);
                await doFestContext.Activities.AddAsync(activity);
                await doFestContext.SaveChangesAsync();
                await doFestContext.BucketListActivities.AddAsync(new BucketListActivity(bucket.Id, activity.Id));
                await doFestContext.SaveChangesAsync();
            });

            //Act
            var response = await HttpClient.PutAsJsonAsync($"/api/v1/bucketlists/{bucket.Id}/activities", updateModel);

            //Assert
            response.IsSuccessStatusCode.Should().BeTrue();
            BucketList existingBucketList = null;

            await ExecuteDatabaseAction(async (doFestContext) =>
            {
                existingBucketList = await doFestContext
                                     .BucketLists
                                     .FirstOrDefaultAsync(x => x.UserId == AuthenticatedUserId);
            });

            existingBucketList.Should().NotBeNull();
            existingBucketList.Name.Should().Be(updateModel.Name);
        }
        /// <summary>
        /// Schimba statusul unei activitati din bucket list: Completed/On hold.
        /// </summary>
        /// <param name="bucketListId"> Id-ul bucket list-ului. </param>
        /// <param name="updateModel"> Modelul care contine informatiile pentru update. </param>
        /// <returns> Modelul bucket list-ului care a fost updatat sau null. </returns>
        public async Task <Result <string, Error> > UpdateBucketList(Guid bucketListId, BucketListUpdateModel updateModel)
        {
            var userId     = Guid.Parse(_accessor.HttpContext.User.Claims.First(c => c.Type == "userId").Value);
            var bucketList = await _bucketListRepository.GetByIdWithActivities(bucketListId);

            if (bucketList == null)
            {
                return(Result.Failure <string, Error>(ErrorsList.UnavailableBucketList));
            }

            var user = await _userRepository.GetById(bucketList.UserId);

            if (userId != bucketList.UserId)
            {
                return(Result.Failure <string, Error>(ErrorsList.UnauthorizedUser));
            }

            bucketList.RemoveActivities(updateModel.ActivitiesForDelete);

            foreach (var activityId in updateModel.ActivitiesForToggle)
            {
                var bucketListActivity = bucketList.BucketListActivities.First((bucketAct) => bucketAct.ActivityId == activityId);
                bucketListActivity.UpdateStatus();
            }

            bucketList.UpdateName(updateModel.Name);

            _bucketListRepository.Update(bucketList);
            await _bucketListRepository.SaveChanges();

            return(Result.Success <string, Error>("Bucketlist updated"));
        }
Exemplo n.º 5
0
 public static BucketListUpdateModel WithActivitiesForDelete(this BucketListUpdateModel model, List <Guid> activities)
 {
     model.ActivitiesForDelete = activities;
     return(model);
 }
Exemplo n.º 6
0
 public static BucketListUpdateModel WithName(this BucketListUpdateModel model, string name)
 {
     model.Name = name;
     return(model);
 }