/// <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)); }
/// <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)); }
public LivroResponse(Entity.Livros dbLivro, List <Entity.Exemplares> exemplares) { this.Id = dbLivro.LivroId; this.Titulo = dbLivro.Titulo; this.Editora = dbLivro.Editora; this.AnoPublicacao = dbLivro.AnoPublicacao; this.Autor = dbLivro.Autor; this.Exemplares = exemplares .Select(__exemplar => __exemplar.Codigo.ToString("0000")) .ToArray(); }
private bool TitleAlreadyExists(string title) { Entity.Livros dbLivro = _livroRepository.GetLivroByTitle(title); return(dbLivro != null); }