Esempio n. 1
0
        public async Task <FilmViewModel> EditFilmAsync(FilmViewModel film)
        {
            if (film == null)
            {
                throw new NullReferenceException($"Параметр film не должен быть null!");
            }
            FilmDataModel model;

            using (var ctx = new FilmsCatalogDbContext())
            {
                model = await ctx.Films
                        .Include("User")
                        .FirstOrDefaultAsync(f => f.Id == film.Id);

                if (model == null)
                {
                    throw new Exception($"Фильм с идентификатором {film.Id} не найден в базе данных!");
                }
                model.Name        = film.Name;
                model.Producer    = film.Producer;
                model.Description = film.Description;
                model.CreateYear  = film.CreateYear;
                model.MimeType    = film.MimeType;
                model.FileName    = film.FileName;
                await ctx.SaveChangesAsync();
            }
            var filmMapper = new FilmModelMapper().CreateMapper();

            return(filmMapper.Map <FilmViewModel>(model));
        }
Esempio n. 2
0
        /// <summary>
        /// Возвращает список фильмов
        /// </summary>
        /// <param name="skip">сколько нужно пропустить, если 0 то ничего не пропускаем</param>
        /// <param name="take">сколько нужно получить, если 0 то берем все</param>
        /// <returns></returns>
        public async Task <FilmsListViewModel> GetFilmsAsync(int skip, int take)
        {
            var result = new FilmsListViewModel();

            using (var ctx = new FilmsCatalogDbContext())
            {
                var q = ctx.Films
                        .OrderByDescending(f => f.Id)
                        .Include("User");
                result.TotalCount = q.Count();
                q            = take == 0 ? q : q.Skip(skip).Take(take);
                result.Films = await q.ProjectToListAsync <FilmViewModel>(new FilmModelMapper());
            }
            return(result);
        }
Esempio n. 3
0
        public async Task <bool> RemoveFilmAsync(int id)
        {
            using (var ctx = new FilmsCatalogDbContext())
            {
                var model = await ctx.Films.FirstOrDefaultAsync(f => f.Id == id);

                if (model == null)
                {
                    throw new Exception($"Фильм с идентификатором {id} не найден в базе данных!");
                }
                ctx.Films.Remove(model);
                await ctx.SaveChangesAsync();
            }
            return(true);
        }
Esempio n. 4
0
        public async Task <FilmViewModel> SaveFilmAsync(FilmViewModel film)
        {
            if (film == null)
            {
                throw new NullReferenceException($"Параметр film не должен быть null!");
            }
            var filmMapper = new FilmModelMapper().CreateMapper();
            var model      = filmMapper.Map <FilmDataModel>(film);

            using (var ctx = new FilmsCatalogDbContext())
            {
                model = ctx.Films.Add(model);
                await ctx.SaveChangesAsync();
            }
            return(filmMapper.Map <FilmViewModel>(model));
        }
Esempio n. 5
0
        public async Task <FilmViewModel> GetFilmByIdAsync(int id)
        {
            var film = new FilmViewModel();

            using (var ctx = new FilmsCatalogDbContext())
            {
                film = await ctx.Films
                       .Include("User")
                       .ProjectTo <FilmViewModel>(new FilmModelMapper())
                       .FirstOrDefaultAsync(f => f.Id == id);
            }
            if (film == null)
            {
                throw new Exception($"Фильм с идентификатором {id} не найден в базе данных!");
            }
            return(film);
        }
 public DirectorRepo(FilmsCatalogDbContext context, IMapper mapper)
 {
     _context = context;
     _mapper  = mapper;
 }
 private IFilmRepo GetDbRepo(FilmsCatalogDbContext context)
 {
     return(new FilmRepo(context, _mapper));
 }