public static Film Handle(int id, ListFilmByIdDelegate listFilmById, GetDirectorByIdDelegate getDirectorByIdDelegate, GetCastByFilmIdDelegate getCastByFilmIdDelegateQuery) { var film = listFilmById(id); if (film == null) { return(null); } var director = getDirectorByIdDelegate(film.DirectorId); film.Director = director; var cast = getCastByFilmIdDelegateQuery(id); film.Cast = cast; return(film); }
static RouteHandlers() { CreateFilmHandler = film => CreateFilmRoute.Handle(film, () => ValidUserQuery.Execute()); DeleteFilmHandler = id => DeleteFilmRoute.Handle(id, () => ValidUserQuery.Execute()); ListFilmByIdHandler = id => ListFilmByIdRoute.Handle( id, filmId => ListFilmsByIdQuery.ListFilmsByIdQuery.Execute(id), dirId => GetDirectorByIdQuery.Execute(dirId), filmId => GetCastByFilmIdQuery.Execute(id) ); ListFilmsHandler = () => ListFilmsRoute.Handle(); UpdateFilmHandler = (id, film) => UpdateFilmRoute.Handle( id, film, () => ValidUserQuery.Execute(), filmId => ListFilmsByIdQuery.ListFilmsByIdQuery.Execute(filmId)); }
public static void Handle(int id, Film film, ValidUserDelegate validUserQuery, ListFilmByIdDelegate listFilmById) { if (!validUserQuery()) { throw new InvalidOperationException(); } //Do some special MEGA CORP business validation var existingFilm = listFilmById(id); existingFilm.Name = film.Name; existingFilm.Budget = film.Budget; existingFilm.Language = film.Language; //Write some SQL to store in db }