Example #1
0
        /// <summary>
        /// Adiciona um novo Livro
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public LivroResponse Add(LivroRequest request)
        {
            List <Exemplares> exemplares = new List <Exemplares>();

            if (TitleAlreadyExists(request.Titulo))
            {
                throw new LivroException("Não é possível cadastrar o livro desejado pois já existe um com o mesmo Título");
            }

            Entity.Livros dbLivro = new Entity.Livros(request);
            _livroRepository.Add(dbLivro);

            // cadastra exemplares
            for (int i = 0; i < request.QtdeExemplares; i++)
            {
                Exemplares dbExemplares = new Exemplares()
                {
                    Livro = dbLivro
                };

                exemplares.Add(dbExemplares);
            }
            _exemplarRepository.AddRange(exemplares);

            _livroRepository.SaveChanges();
            _exemplarRepository.SaveChanges();

            return(new LivroResponse(dbLivro, exemplares));
        }
Example #2
0
        /// <summary>
        /// Altera um livro já existente
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public LivroResponse Update(LivroRequest request)
        {
            Entity.Livros dbLivros = _livroRepository.GetById(request.Id);

            if (dbLivros == null)
            {
                throw new LivroException("O Livro informado para edição não existe");
            }

            if (request.Titulo != request.CurrentTitle)
            {
                if (TitleAlreadyExists(request.Titulo))
                {
                    throw new LivroException("Não é possível alterar o livro desejado pois já existe um com o mesmo Título");
                }
            }

            dbLivros.Titulo        = request.Titulo;
            dbLivros.Editora       = request.Editora;
            dbLivros.AnoPublicacao = request.AnoPublicacao;
            dbLivros.Autor         = request.Autor;

            int currentQtyExemplares = _exemplarRepository.GetExemplarByBookId(request.Id).Count();

            int countDifference = 0;

            if (currentQtyExemplares < request.QtdeExemplares)
            {
                List <Exemplares> exemplares = new List <Exemplares>();
                countDifference = (request.QtdeExemplares - currentQtyExemplares);

                for (int i = 0; i < countDifference; i++)
                {
                    Exemplares dbExemplar = new Exemplares()
                    {
                        LivroId = request.Id
                    };
                    exemplares.Add(dbExemplar);
                }
                _exemplarRepository.AddRange(exemplares);
            }
            else
            {
                countDifference = (currentQtyExemplares - request.QtdeExemplares);

                List <Exemplares> exemplares = _exemplarRepository.GetExemplarByBookId(request.Id)
                                               .OrderByDescending(__exemplar => __exemplar.Codigo)
                                               .Take(countDifference)
                                               .ToList();
                _exemplarRepository.RemoveRange(exemplares);
            }

            _livroRepository.Update(dbLivros);
            _livroRepository.SaveChanges();
            _exemplarRepository.SaveChanges();

            return(new LivroResponse(dbLivros));
        }
Example #3
0
 //Metodos proprios
 public void adicionarExemplar(Exemplar exemplar)
 {
     Exemplares.Add(exemplar);
 }