public async Task <IActionResult> Send(string id, SeguimientoVM seguimiento)
        {
            if (ModelState.IsValid)
            {
                var invoice = await _api.GetInvoice("http://facturacion-utn-amazon.herokuapp.com", "/api/invoice", id);

                if (invoice == null)
                {
                    return(NotFound());
                }

                var email = User.Identity.Name;

                if (invoice.user_client.email != email)
                {
                    return(Forbid());
                }

                try
                {
                    var now    = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.Local);
                    var tipoT  = seguimiento.PedTipoEnvio.Equals("T");
                    var regalo = seguimiento.PedRegalo.Equals("S");

                    var extra = 0;
                    if (!tipoT)
                    {
                        extra = 5;
                    }

                    if (regalo)
                    {
                        extra += 10;
                    }

                    var pedido = new Pedidos
                    {
                        InvoiceNumber    = id,
                        ClienteEmail     = email,
                        PedTotal         = decimal.Parse(invoice.total),
                        PedFechaEnvio    = now,
                        PedFase          = 'P',
                        PedLugarOrigen   = seguimiento.PedLugarOrigen,
                        PedLugarDestino  = seguimiento.PedLugarDestino,
                        PedEnvioEstandar = tipoT,
                        PedCostoExtra    = extra,
                        PedRegalo        = regalo,
                        PedTarjeta       = seguimiento.PedTarjeta
                    };

                    _context.Add(pedido);
                    await _context.SaveChangesAsync();

                    _flashMessage.Confirmation("Pedido enviado.");

                    return(RedirectToAction(nameof(Index)));
                }
                catch (DbUpdateConcurrencyException)
                {
                    throw;
                }
            }
            seguimiento.InvoiceNumber = id;

            return(View(seguimiento));
        }
Пример #2
0
        public async Task <IActionResult> Delivery(string id, EntregaVM _entrega)
        {
            if (_entrega.Estado && _entrega.PersonaPresente)
            {
                if (!ModelState.IsValid)
                {
                    return(View(_entrega));
                }
            }

            try
            {
                var seguimiento = await _context.Pedidos.FirstOrDefaultAsync(i => i.InvoiceNumber == id);

                if (seguimiento == null)
                {
                    return(NotFound());
                }

                if (seguimiento.PedFase == 'E' || seguimiento.PedFase == 'N' || seguimiento.PedFechaFin == null)
                {
                    return(Forbid());
                }

                if (_entrega.Estado)
                {
                    seguimiento.Mensajero       = User.Identity.Name;
                    seguimiento.PedFase         = 'E';
                    seguimiento.PedFechaEntrega = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, TimeZoneInfo.Local);

                    if (!_entrega.PersonaPresente)
                    {
                        seguimiento.PedDireccionEntrega = _entrega.Direccion;
                    }
                    else
                    {
                        var entrega = new Entregas
                        {
                            PedId                = seguimiento.PedId,
                            EntCelular           = _entrega.Celular,
                            EntParentesco        = _entrega.Parentesco,
                            EntPerApellidos      = _entrega.Apellidos,
                            EntPerNombres        = _entrega.Nombres,
                            EntPerIdentificacion = _entrega.Identificacion
                        };
                        _context.Add(entrega);
                    }

                    await _context.SaveChangesAsync();

                    _flashMessage.Confirmation($"Pedido con Factura Nro {seguimiento.InvoiceNumber} entregado.");
                }
                else
                {
                    seguimiento.PedFase        = 'N';
                    seguimiento.PedDescripcion = _entrega.Descripcion;

                    await _context.SaveChangesAsync();

                    _flashMessage.Confirmation($"Pedido con Factura Nro {seguimiento.InvoiceNumber} registrado como no entregado.");
                }
                return(RedirectToAction(nameof(Index)));
            }
            catch
            {
                _flashMessage.Danger($"Error al registrar la entrega.");
            }
            return(View(_entrega));
        }