public async Task <IActionResult> PutCertificadoGarantia(int id, CertificadoGarantia certificadoGarantia)
        {
            if (id != certificadoGarantia.NFactura)
            {
                return(BadRequest());
            }

            _context.Entry(certificadoGarantia).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CertificadoGarantiaExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public dynamic comprar(int idcliente, DispositivoSeVendeEn dispositivoSeVendeEn)
        {
            DispositivoAdquirido adquirido = new DispositivoAdquirido();

            adquirido.Modelo = dispositivoSeVendeEn.ModeloDispotivo;
            adquirido        = _context.DispositivoAdquirido.Add(adquirido).Entity;
            _context.SaveChanges();
            Pedido pedido = new Pedido();

            pedido.IdCliente         = idcliente;
            pedido.Monto             = dispositivoSeVendeEn.Precio;
            pedido.NSerieDispositivo = adquirido.NSerie;
            pedido = _context.Pedido.Add(pedido).Entity;
            _context.SaveChanges();
            Factura factura = new Factura();

            factura.Dia = DateTime.Now.Day;
            factura.Ano = DateTime.Now.Year;
            factura.Mes = DateTime.Now.Month;
            factura     = _context.Factura.Add(factura).Entity;
            _context.SaveChanges();
            PedidoFactura pedidoFactura = new PedidoFactura();

            pedidoFactura.IdPedido = pedido.Id;
            pedidoFactura.NFactura = factura.NFactura;
            _context.PedidoFactura.Add(pedidoFactura);
            CertificadoGarantia certificado = new CertificadoGarantia();
            DispositivoModelo   modelo      = _context.DispositivoModelo.Find(dispositivoSeVendeEn.ModeloDispotivo);
            Tipo tipo = _context.Tipo.Find(modelo.Tipo);

            certificado.NFactura       = factura.NFactura;
            certificado.MesFinGarantia = DateTime.Now.AddMonths(tipo.TiempoDeGarantia).Month;
            certificado.AnoFinGarantia = DateTime.Now.AddMonths(tipo.TiempoDeGarantia).Year;
            certificado = _context.CertificadoGarantia.Add(certificado).Entity;
            _context.SaveChanges();

            try
            {
            }
            catch (DbUpdateException)
            {
                if (DispositivoSeVendeEnExists(dispositivoSeVendeEn.CjDistribuidor))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }



            Dictionary <string, string> parametersFactura = new Dictionary <string, string>();

            parametersFactura.Add("fechacompra", factura.Dia + "/" + factura.Mes + "/" + factura.Ano);
            parametersFactura.Add("nfactura", factura.NFactura + "");
            parametersFactura.Add("tipo", tipo.Nombre);
            parametersFactura.Add("modelo", adquirido.Modelo);
            parametersFactura.Add("precio", dispositivoSeVendeEn.Precio + "");



            facturaset ds = new facturaset();;
            DataTable  t  = ds.Tables.Add("Items");
            DataRow    r;


            t.Columns.Add("fechacompra", Type.GetType("System.String"));
            t.Columns.Add("nfactura", Type.GetType("System.String"));
            t.Columns.Add("tipo", Type.GetType("System.String"));
            t.Columns.Add("modelo", Type.GetType("System.String"));
            t.Columns.Add("precio", Type.GetType("System.String"));


            Debug.WriteLine("otro mas");
            r = t.NewRow();
            r["fechacompra"] = factura.Dia + "/" + factura.Mes + "/" + factura.Ano;
            r["nfactura"]    = factura.NFactura + "";
            r["tipo"]        = tipo.Nombre;
            r["modelo"]      = adquirido.Modelo;
            r["precio"]      = dispositivoSeVendeEn.Precio + "";


            t.Rows.Add(r);



            string nombrereportefactura = "Factura";

            var stringfactura = GenerateReportAsync(nombrereportefactura, t);
            // var juan = File(stringfactura, System.Net.Mime.MediaTypeNames.Application.Octet, nombrereportefactura + ".pdf");
            // SendIt(stringfactura, nombrereportefactura);

            Cliente cliente = _context.Cliente.Find(idcliente);



            garantiaset dsg = new garantiaset();;
            DataTable   t2  = dsg.Tables.Add("Items");
            DataRow     r2;


            t2.Columns.Add("nombre", Type.GetType("System.String"));
            t2.Columns.Add("fechacompra", Type.GetType("System.String"));
            t2.Columns.Add("fechafin", Type.GetType("System.String"));
            t2.Columns.Add("nserie", Type.GetType("System.String"));
            t2.Columns.Add("tipo", Type.GetType("System.String"));
            t2.Columns.Add("modelo", Type.GetType("System.String"));
            t2.Columns.Add("marca", Type.GetType("System.String"));

            Debug.WriteLine("otro mas");
            r2                = t2.NewRow();
            r2["nombre"]      = cliente.Nombre + " " + cliente.PrimerApellido + " " + cliente.SegundoApellido;
            r2["fechacompra"] = "" + factura.Dia + "/" + factura.Mes + "/" + factura.Ano;
            r2["fechafin"]    = certificado.MesFinGarantia + "/" + certificado.AnoFinGarantia;
            r2["nserie"]      = pedido.NSerieDispositivo + "";
            r2["tipo"]        = modelo.Tipo;
            r2["modelo"]      = modelo.Modelo;
            r2["marca"]       = modelo.Marca;

            t2.Rows.Add(r2);



            string nombrereportegarantia = "Garantia";

            byte[] pdfcertificado = GenerateReportAsync(nombrereportegarantia, t2);
            //   var file = File(pdfcertificado, System.Net.Mime.MediaTypeNames.Application.Octet, nombrereportegarantia + ".pdf");

            enviaremail(stringfactura, pdfcertificado, cliente.Email);



            //Pdfs pdfs = new Pdfs();
            //pdfs.pdf_factura = stringfactura;
            //pdfs.idcliente = idcliente;
            //pdfslista.Add(pdfs);
            // Debug.WriteLine(pdfslista.First(pdfs => pdfs.idcliente == idcliente).idcliente);

            return(new { pedido, factura, certificado });
        }
        public async Task <ActionResult <CertificadoGarantia> > PostCertificadoGarantia(CertificadoGarantia certificadoGarantia)
        {
            _context.CertificadoGarantia.Add(certificadoGarantia);
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (CertificadoGarantiaExists(certificadoGarantia.NFactura))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtAction("GetCertificadoGarantia", new { id = certificadoGarantia.NFactura }, certificadoGarantia));
        }