using ListaLeitura.Negocio;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace ListaLeitura.Repositorio
{
public class LivroRepositorioCSV : ILivroRepositorio
{
// Atributos:
private static readonly string nomeArquivoCSV = "Repositorio\\livros.csv";
private ListaDeLeitura _paraLer;
private ListaDeLeitura _lendo;
private ListaDeLeitura _lidos;
public LivroRepositorioCSV()
{
var arrayParaLer = new List<Livro>();
var arrayLendo = new List<Livro>();
var arrayLidos = new List<Livro>();
using (var file = File.OpenText(LivroRepositorioCSV.nomeArquivoCSV))
{
while (!file.EndOfStream)
{
var textoLivro = file.ReadLine();
if(string.IsNullOrEmpty(textoLivro))
{
continue;
}
var infoLivro = textoLivro.Split(';');
var livro = new Livro
{
Id = Convert.ToInt32(infoLivro[1]),
Titulo = infoLivro[2],
Autor = infoLivro[3]
};
switch (infoLivro[0])
{
case "para-ler":
arrayParaLer.Add(livro);
break;
case "lendo":
arrayLendo.Add(livro);
break;
case "lidos":
arrayLidos.Add(livro);
break;
default:
break;
}
}
}
_paraLer = new ListaDeLeitura("Para Ler", arrayParaLer.ToArray());
_lendo = new ListaDeLeitura("Lendo", arrayLendo.ToArray());
_lidos = new ListaDeLeitura("Lidos", arrayLidos.ToArray());
}
public ListaDeLeitura ParaLer => _paraLer;
public ListaDeLeitura Lendo => _lendo;
public ListaDeLeitura Lidos => _lidos;
public IEnumerable<Livro> Todos => _paraLer.Livros.Union(_lendo.Livros).Union(_lidos.Livros);
public void Incluir(Livro livro)
{
var id = Todos.Select(l => l.Id).Max();
using (var file = File.AppendText(LivroRepositorioCSV.nomeArquivoCSV))
{
file.WriteLine($"para-ler;{id+1};{livro.Titulo};{livro.Autor};");
}
}
}
}
using ListaLeitura.Negocio;
using ListaLeitura.Repositorio;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace ListaLeitura
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddRouting();
}
public void Configure(IApplicationBuilder app)
{
//app.Run(LivrosParaLer);
//app.Run(Roteamento);
var builder = new RouteBuilder(app);
builder.MapRoute("Livros/ParaLer", LivrosParaLer);
builder.MapRoute("Livros/Lendo", LivrosLendo);
builder.MapRoute("Livros/Lidos", LivrosLidos);
builder.MapRoute("Cadastro/NovoLivro/{nome}/{autor}", NovoLivroParaLer);
builder.MapRoute("Livros/Detalhes/{id:int}", ExibeDetalhes);
builder.MapRoute("Cadastro/NovoLivro", ExibeFormulario);
builder.MapRoute("Cadastro/Incluir", ProcessaFormulario);
var rotas = builder.Build();
app.UseRouter(rotas);
}
private Task ProcessaFormulario(HttpContext context)
{
var livro = new Livro()
{
Titulo = context.Request.Query["titulo"].First(),
Autor = context.Request.Query["autor"].First()
};
var _repo = new LivroRepositorioCSV();
_repo.Incluir(livro);
return context.Response.WriteAsync("O livro foi adicionado com sucesso!");
}
private Task ExibeFormulario(HttpContext context)
{
var html = @"
<html>
<form action='/Cadastro/Incluir'>
<input name='titulo'/>
<input name='autor'/>
<button>Gravar</button>
</form>
</html>
";
return context.Response.WriteAsync(html);
}