public async Task ManageUserMovieAsync(ManageUserMovieDTO manageUserMovieDTO, ClaimsPrincipal sessionUser) { var assignedMovie = await GetUserMovieByUserIdAsync(manageUserMovieDTO.MovieId, sessionUser); if (assignedMovie == null) { throw new FlowException("User does not have this movie!"); } ManageUserMovieCases(manageUserMovieDTO, assignedMovie); _userMovieRepository.Update(assignedMovie); await _userMovieRepository.SaveEntitiesAsync(); }
public async Task <IActionResult> RemoveUserMovie([FromBody] ManageUserMovieDTO manageUserMovieDTO) { try { await _userMovieService.RemoveUserMovieAsync(manageUserMovieDTO.MovieId, User); return(Ok()); } catch (FlowException ex) { return(BadRequest(ex.Message)); } catch (Exception) { return(StatusCode(500, "An error has occured!Try again later!")); } }
private void ManageUserMovieCases(ManageUserMovieDTO manageUserMovieDTO, UserMovie assignedMovie) { if (manageUserMovieDTO.ActionName == _configuration["ManageMovieCases:favourite"]) { if (assignedMovie.IsFavourite == true) { throw new FlowException("Movie already favourite!"); } assignedMovie.IsFavourite = true; } else if (manageUserMovieDTO.ActionName == _configuration["ManageMovieCases:unfavourite"]) { if (assignedMovie.IsFavourite == false) { throw new FlowException("Movie already unfavourited!"); } assignedMovie.IsFavourite = false; } else if (manageUserMovieDTO.ActionName == _configuration["ManageMovieCases:watched"]) { if (assignedMovie.IsWatched == true) { throw new FlowException("Movie already watched!"); } assignedMovie.IsWatched = true; } else if (manageUserMovieDTO.ActionName == _configuration["ManageMovieCases:unwatch"]) { if (assignedMovie.IsWatched == false) { throw new FlowException("Movie already unwatched!"); } assignedMovie.IsWatched = false; } }