public IResult <Movie> Update(Movie movie) { ValidateMovie(movie); IResult <Movie> movieToUpdateResult = moviesRepository.GetById(movie.MovieId); switch (movieToUpdateResult) { case Error <Movie> error: Exception exception = new IdNotFoundException("Update-method id not found exception.", error.Exception); return(new Error <Movie>(exception)); case OK <Movie> ok: try { moviesRepository.Update(ok.Result); return(ok); } catch { Exception updateRepoException = new RepositoryUnknownException("Update-method repository exception."); return(new Error <Movie>(updateRepoException)); } default: Exception getByIdRepoException = new RepositoryUnknownException("GetById-method repository exception."); return(new Error <Movie>(getByIdRepoException)); } }
public IResult <Movie> Delete(string id) { IResult <Movie> movieToDeleteResult = moviesRepository.GetById(id); switch (movieToDeleteResult) { case Error <Movie> error: Exception exception = new IdNotFoundException("Delete-method id not found exception.", error.Exception); return(new Error <Movie>(exception)); case OK <Movie> ok: try { moviesRepository.Delete(ok.Result); return(ok); } catch { Exception deleteRepoException = new RepositoryUnknownException("Delete-method repository exception."); return(new Error <Movie>(deleteRepoException)); } default: Exception getByIdRepoException = new RepositoryUnknownException("GetById-method repository exception."); return(new Error <Movie>(getByIdRepoException)); } }
public IResult <Movie> GetById(string id) { IResult <Movie> result = moviesRepository.GetById(id); switch (result) { // Daca reusesc, returnez ok. case OK <Movie> ok: return(ok); // Daca nu reusesc din cauza bazei de date. case Error <Movie> error: Exception databaseContextException = new DatabaseContextException("GetById-method repository exception.", error.Exception); return(new Error <Movie>(databaseContextException)); default: Exception getByIdRepoException = new RepositoryUnknownException("GetById-method repository exception."); return(new Error <Movie>(getByIdRepoException)); } }
public IResult <Movie> Insert(Movie movie) { // Validez filmul. ValidateMovie(movie); // Verific daca mai sunt filme cu acelasi id in baza de date. IResult <Movie> duplicateMovie = moviesRepository.GetById(movie.MovieId); switch (duplicateMovie) { // Daca am deja filmul in baza de date. case OK <Movie> ok: Exception duplicateMovieIdException = new DuplicateMovieIdException(); return(new Error <Movie>(duplicateMovieIdException)); // Daca nu am filmul in baza de date, incerc sa-l inserez. // Daca reusesc sa-l inserez, returnez ok. // Daca nu reuseste comanda Insert, returnez o eroare specifica. case Error <Movie> error: try { moviesRepository.Insert(movie); return(new OK <Movie>(movie)); } catch { Exception insertRepoException = new RepositoryUnknownException("Insert-method repository exception", error.Exception); return(new Error <Movie>(insertRepoException)); } // Daca nu reuseste comanda de GetById, returnez o eroare specifica. default: Exception getByIdRepoException = new RepositoryUnknownException("GetById-method repository exception."); return(new Error <Movie>(getByIdRepoException)); } }