public async Task <IActionResult> UpdateProfileActivities([FromBody] UpdateProfileActivitiesCommand model) { FirebaseUser user = HttpContext.GetFirebaseUser(); model.firebaseId = user.UserId; ResultWrapper <UpdateProfileActivitiesOutput> result = new ResultWrapper <UpdateProfileActivitiesOutput>(); result = await _mediator.Send(model); return(Ok(result)); }
public async Task <ResultWrapper <UpdateProfileActivitiesOutput> > Handle(UpdateProfileActivitiesCommand request, CancellationToken cancellationToken) { ResultWrapper <UpdateProfileActivitiesOutput> updateProfileResult = new ResultWrapper <UpdateProfileActivitiesOutput>(); TUser tUser = _dbContext.TUser.FirstOrDefault(x => x.FireBaseId == request.firebaseId); if (tUser == null) { updateProfileResult.Status = false; updateProfileResult.Message = "User doesn't exists"; return(updateProfileResult); } List <TUserSport> userSports = _dbContext.TUserSport.Where(x => x.TUser.FireBaseId == request.firebaseId).ToList(); _dbContext.TUserSport.RemoveRange(userSports.Where(x => !request.Activities.Contains(x.TSportId))); int selectedSportsCount = _dbContext.TSport.Where(x => request.Activities.Contains(x.Id)).Count(); if (selectedSportsCount != request.Activities.Count) { updateProfileResult.Status = false; updateProfileResult.Message = "Selected activities are invalid!"; return(updateProfileResult); } foreach (int sportId in request.Activities.Where(x => !userSports.Any(z => z.TSportId == x))) { _dbContext.TUserSport.Add(new TUserSport() { TUserId = tUser.Id, TSportId = sportId }); } int r = await _dbContext.SaveChangesAsync(); if (r < 0) { updateProfileResult.Status = false; updateProfileResult.Message = "Unhandled error!"; return(updateProfileResult); } updateProfileResult.Status = true; updateProfileResult.Result = new UpdateProfileActivitiesOutput() { }; return(updateProfileResult); }