Beispiel #1
0
        public async Task <ActionResult> mtdModificarOficial(int id, [FromBody] Agentes agente)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerHora();
                var response = await context.tbagentes.FirstOrDefaultAsync(x => x.id == id);

                if (response.id != id)
                {
                    return(NotFound());
                }
                response.intidzona_id       = agente.intidzona_id;
                response.last_modified_by   = agente.last_modified_by;
                response.last_modified_date = horadeTransaccion.Value;
                response.intidconcesion_id  = agente.intidconcesion_id;
                response.str_nombre         = agente.str_nombre;

                await context.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                return(Json(new { token = ex.Message }));
            }
        }
Beispiel #2
0
        public async Task <ActionResult> mtdIngresarComerciante([FromBody] Comerciantes comerciantes)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerHora();
                string strComercianteN = comerciantes.str_nombre + ' ' + comerciantes.str_apellido_ap + ' ' + comerciantes.str_apellido_mat;
                var    response        = await context.tbcomerciantes.FirstOrDefaultAsync(x => x.str_nombre + ' ' + x.str_apellido_ap + x.str_apellido_mat == strComercianteN);

                if (response == null)
                {
                    comerciantes.created_date       = horadeTransaccion.Value;
                    comerciantes.last_modified_date = horadeTransaccion.Value;
                    context.tbcomerciantes.Add(comerciantes);
                    await context.SaveChangesAsync();

                    return(Ok());
                }
                //ModelState.AddModelError("token", "El comerciante ya se encuentra registrado");
                //return BadRequest(ModelState);
                return(Json(new { token = "El comerciante ya se encuentra registrado" }));
            }

            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <ActionResult <Vehiculos> > mtdIngresarVehiculo([FromBody] Vehiculos vehiculos)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerHora();

                var response = await context.tbvehiculos.FirstOrDefaultAsync(x => x.str_placas == vehiculos.str_placas);

                if (response == null)
                {
                    vehiculos.created_date       = horadeTransaccion.Value;
                    vehiculos.last_modified_date = horadeTransaccion.Value;
                    context.tbvehiculos.Add(vehiculos);
                    await context.SaveChangesAsync();

                    return(Ok());
                }

                //ModelState.AddModelError("token", "La placas que intenta registrar ya se encuentra registradas");
                //return BadRequest(ModelState);
                return(Json(new { token = "La placas que intenta registrar ya se encuentra registradas" }));
            }

            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
Beispiel #4
0
        public async Task <ActionResult> mtdInsetarOficiales([FromBody] Agentes agente)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerHora();
                var response = await context.tbagentes.FirstOrDefaultAsync(x => x.str_nombre == agente.str_nombre);

                if (response == null)
                {
                    agente.last_modified_date = horadeTransaccion.Value;;
                    agente.created_date       = horadeTransaccion.Value;
                    context.tbagentes.Add(agente);
                    await context.SaveChangesAsync();

                    return(Ok());
                }

                //ModelState.AddModelError("token", "El agente ya se encuentra registrado");
                //return BadRequest(ModelState);
                return(Json(new { token = "El oficial ya se encuentra registrado" }));
            }
            catch (Exception ex)
            {
                //    ModelState.AddModelError("token", ex.Message);
                //    return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <int> mtdCrearSaldo(string strIdUser)
        {
            try
            {
                ParametrosController    par  = new ParametrosController(context);
                ActionResult <DateTime> time = par.mtdObtenerFechaMexico();
                // DateTime time = DateTime.Now;

                var saldo = new Saldos
                {
                    created_by           = strIdUser,
                    created_date         = time.Value,
                    bit_status           = true,
                    dtmfecha             = time.Value,
                    flt_monto_final      = 0.0,
                    flt_monto_inicial    = 0.0,
                    str_forma_pago       = " ",
                    str_tipo_recarga     = " ",
                    int_id_usuario_id    = strIdUser,
                    int_id_usuario_trans = strIdUser,
                    intidconcesion_id    = null
                };

                await context.AddAsync(saldo);

                await context.SaveChangesAsync();

                intdSaldo = saldo.id;
                return(intdSaldo);
            }
            catch (Exception ex)
            {
                return(0);
            }
        }
        public async Task <ActionResult> mtdActualizaVehiculo(int id, [FromBody] Vehiculos vehiculos)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerHora();

                var response = await context.tbvehiculos.FirstOrDefaultAsync(x => x.id == id);

                if (response.id != id)
                {
                    return(BadRequest());
                }
                response.last_modified_by   = vehiculos.last_modified_by;
                response.last_modified_date = horadeTransaccion.Value;
                response.bit_status         = vehiculos.bit_status;
                response.str_color          = vehiculos.str_color;
                response.str_modelo         = vehiculos.str_modelo;
                response.str_marca          = vehiculos.str_marca;
                response.str_placas         = vehiculos.str_placas;
                // response.intidconcesion_id = vehiculos.intidconcesion_id;

                await context.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
Beispiel #7
0
        public async Task <ActionResult> mtdActualizaComerciante(int id, [FromBody] Comisiones comisiones)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerFechaMexico();

                var response = await context.tbcomisiones.FirstOrDefaultAsync(x => x.id == id);

                if (response.id != id)
                {
                    return(BadRequest());
                }
                response.dcm_porcentaje     = comisiones.dcm_porcentaje;
                response.dcm_valor_fijo     = comisiones.dcm_valor_fijo;
                response.str_tipo           = comisiones.str_tipo;
                response.last_modified_by   = comisiones.last_modified_by;
                response.last_modified_date = horadeTransaccion.Value;
                response.intidconcesion_id  = comisiones.intidconcesion_id;

                await context.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <ActionResult> mtdIngresarCiudad([FromBody] Ciudades ciudades)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerFechaMexico();

                DateTime time = horadeTransaccion.Value;
                //DateTime time = DateTime.Now;

                using (IDbContextTransaction transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        ciudades.created_date       = time;
                        ciudades.last_modified_date = time;
                        ciudades.int_id_ciudad      = null;
                        context.tbciudades.Add(ciudades);
                        await context.SaveChangesAsync();

                        context.tbcatciudades.Add(new CatCiudades()
                        {
                            str_ciudad = ciudades.str_ciudad
                        });

                        await context.SaveChangesAsync();


                        transaction.Commit();
                    }

                    catch (Exception ex)
                    {
                        transaction.Rollback();

                        return(Json(new { token = ex.Message }));
                    }
                }
                return(Ok());
            }

            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
Beispiel #9
0
        public async Task <ActionResult> mtdIngresarComerciante([FromBody] Comisiones comisiones)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerFechaMexico();

                comisiones.created_date       = horadeTransaccion.Value;
                comisiones.last_modified_date = horadeTransaccion.Value;
                context.tbcomisiones.Add(comisiones);
                await context.SaveChangesAsync();

                return(Ok());
            }

            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <ActionResult <Saldos> > mtdIngresarSaldo([FromBody] Saldos saldos)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerHora();

                saldos.created_date       = horadeTransaccion.Value;
                saldos.last_modified_date = horadeTransaccion.Value;
                context.tbsaldo.Add(saldos);
                await context.SaveChangesAsync();

                return(Ok());
            }

            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <ActionResult> mtdAgregarLicencias(int intidConcesion, [FromBody] AgregarLicencias licencias)
        {
            try
            {
                var response = await context.tbconcesiones.FirstOrDefaultAsync(x => x.id == intidConcesion);

                if (response == null)
                {
                    return(NotFound());
                }
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerFechaMexico();
                var tipoUsuario = await context.tbtiposusuarios.FirstOrDefaultAsync(x => x.strTipoUsuario == "AGENTE VIAL");

                foreach (var item in licencias.cuentas)
                {
                    var user = new ApplicationUser
                    {
                        UserName          = item.Email,
                        Email             = item.Email,
                        created_date      = horadeTransaccion.Value,
                        intidconcesion_id = intidConcesion,
                        intIdTipoUsuario  = tipoUsuario.id,
                        intidciudad       = response.intidciudad,
                        EmailConfirmed    = true,
                        bit_status        = true
                    };

                    var result = await _userManager.CreateAsync(user, item.PasswordHash);
                }

                return(Ok());
            }
            catch (Exception ex)
            {
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <ActionResult> mtdActualizaTarjeta(int id, [FromBody] Tarjetas tarjetas)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerHora();

                var response = await context.tbtarjetas.FirstOrDefaultAsync(x => x.id == id);

                if (response.id != id)
                {
                    return(BadRequest());
                }

                response.last_modified_by       = tarjetas.last_modified_by;
                response.last_modified_date     = horadeTransaccion.Value;
                response.bit_status             = tarjetas.bit_status;
                response.dc_mano_vigencia       = tarjetas.dc_mano_vigencia;
                response.dcm_mes_vigencia       = tarjetas.dcm_mes_vigencia;
                response.str_referencia_tarjeta = tarjetas.str_referencia_tarjeta;
                response.str_sistema_tarjeta    = tarjetas.str_sistema_tarjeta;
                response.str_tarjeta            = tarjetas.str_tarjeta;
                response.str_titular            = tarjetas.str_titular;
                response.int_id_usuario_id      = tarjetas.int_id_usuario_id;
                response.intidconcesion_id      = tarjetas.intidconcesion_id;

                await context.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <ActionResult> mtdActualizaSaldos(int id, [FromBody] Saldos saldos)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerHora();

                var response = await context.tbsaldo.FirstOrDefaultAsync(x => x.id == id);

                if (response.id != id)
                {
                    return(BadRequest());
                }

                response.last_modified_by     = saldos.last_modified_by;
                response.last_modified_date   = horadeTransaccion.Value;
                response.dtmfecha             = saldos.dtmfecha;
                response.flt_monto_final      = saldos.flt_monto_final;
                response.flt_monto_inicial    = saldos.flt_monto_inicial;
                response.int_id_usuario_trans = saldos.int_id_usuario_trans;
                response.str_forma_pago       = saldos.str_forma_pago;
                response.str_tipo_recarga     = saldos.str_tipo_recarga;
                response.int_id_usuario_id    = saldos.int_id_usuario_id;
                response.intidconcesion_id    = saldos.intidconcesion_id;

                await context.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <ActionResult> mtdRecargarSaldo(double fltMonto, [FromBody] Saldos saldos)
        {
            string strresult       = " ";
            double dblSaldoInicial = 0;

            //var strategy = context.Database.CreateExecutionStrategy();
            //await strategy.ExecuteAsync(async () =>
            //{
            using (IDbContextTransaction transaction = context.Database.BeginTransaction())
            {
                try
                {
                    ParametrosController    par = new ParametrosController(context);
                    ActionResult <DateTime> horadeTransaccion = par.mtdObtenerFechaMexico();
                    DateTime time = horadeTransaccion.Value;
                    //DateTime time = DateTime.Now;
                    //Se ocomento esta linea por actualizacion
                    //var response = await context.tbsaldo.FirstOrDefaultAsync(x => x.id == id);

                    //var comision = await context.tbcomisiones.FirstOrDefaultAsync(x => x.intidconcesion_id == movimientos.intidconcesion_id && x.str_tipo == "RECARGA");

                    var usuario = await context.NetUsers.FirstOrDefaultAsync(x => x.Id == saldos.int_id_usuario_trans);

                    dblSaldoInicial = usuario.dbl_saldo_actual;

                    usuario.dbl_saldo_actual   = usuario.dbl_saldo_actual + fltMonto;
                    usuario.dbl_saldo_anterior = dblSaldoInicial;

                    var comision = await context.tbparametros.Where(x => x.intidconcesion_id == null).FirstOrDefaultAsync();

                    double c = comision.PorcentajeComisionRecarga / 100;

                    double total = fltMonto * c;
                    //Se comento esta linea por actualizacion
                    //response.last_modified_by = saldos.last_modified_by;
                    //response.last_modified_date = horadeTransaccion.Value;
                    //response.dtmfecha = horadeTransaccion.Value;
                    //response.flt_monto_final = response.flt_monto_final + fltMonto;
                    //response.flt_monto_inicial = dblSaldoInicial;
                    //response.int_id_usuario_trans = saldos.int_id_usuario_trans;
                    //response.str_forma_pago = saldos.str_forma_pago;
                    //response.str_tipo_recarga = saldos.str_tipo_recarga;

                    //response.intidconcesion_id = saldos.intidconcesion_id;

                    await context.SaveChangesAsync();

                    context.tbsaldo.Add(new Saldos()
                    {
                        created_by = saldos.created_by,
                        // created_date = horadeTransaccion.Value,
                        dtmfecha                = time,
                        last_modified_date      = time,
                        flt_monto_inicial       = dblSaldoInicial,
                        flt_monto_final         = usuario.dbl_saldo_actual,
                        str_forma_pago          = "VIRTUAL",
                        str_tipo_recarga        = "RECARGA",
                        flt_monto               = fltMonto,
                        flt_porcentaje_comision = total,
                        flt_total_con_comision  = fltMonto + total,
                        int_id_usuario_id       = usuario.Id,
                        int_id_usuario_trans    = usuario.Id
                    });;

                    await context.SaveChangesAsync();

                    await _emailSender.SendEmailAsync(usuario.Email, "Recarga de saldo",
                                                      "La recarga de saldo se ha realizado exitosamente. Monto $" + fltMonto + "MXN.<br/> Si usted no reconoce este movimiento comuniquese con el equipo de soporte");

                    transaction.Commit();
                }

                catch (Exception ex)
                {
                    transaction.Rollback();
                    strresult = ex.Message;
                }
            }
            //});
            return(Ok());
        }
        public async Task <ActionResult <ApplicationUser> > EditarUsuario([FromBody] UserInfo model, string id)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerHora();
                var user = await _userManager.FindByIdAsync(id);


                if (user.Id != id)
                {
                    return(NotFound());
                }


                if (model.intidconcesion_id == 0)
                {
                    if (model.intidciudad == 0)
                    {
                        user.UserName           = model.UserName;
                        user.Email              = model.Email;
                        user.strNombre          = model.strNombre;
                        user.strApellidos       = model.strApellidos;
                        user.PhoneNumber        = model.PhoneNumber;
                        user.last_modified_by   = model.last_modified_by;
                        user.intidconcesion_id  = model.intidconcesion_id;
                        user.last_modified_date = horadeTransaccion.Value;
                        user.created_by         = model.created_by;
                        user.str_rfc            = model.str_rfc;
                        user.str_direccion      = model.str_direccion;
                        user.str_cp             = model.str_cp;
                        user.str_razon_social   = model.str_razon_social;
                        user.intidciudad        = null;
                        user.intidconcesion_id  = null;
                    }

                    user.UserName           = model.UserName;
                    user.Email              = model.Email;
                    user.strNombre          = model.strNombre;
                    user.strApellidos       = model.strApellidos;
                    user.PhoneNumber        = model.PhoneNumber;
                    user.last_modified_by   = model.last_modified_by;
                    user.intidconcesion_id  = model.intidconcesion_id;
                    user.last_modified_date = horadeTransaccion.Value;
                    user.created_by         = model.created_by;
                    user.str_rfc            = model.str_rfc;
                    user.str_direccion      = model.str_direccion;
                    user.str_cp             = model.str_cp;
                    user.str_razon_social   = model.str_razon_social;
                    user.intidciudad        = model.intidciudad;
                    user.intidconcesion_id  = null;
                }
                else
                {
                    user.UserName           = model.UserName;
                    user.Email              = model.Email;
                    user.strNombre          = model.strNombre;
                    user.strApellidos       = model.strApellidos;
                    user.PhoneNumber        = model.PhoneNumber;
                    user.last_modified_by   = model.last_modified_by;
                    user.intidconcesion_id  = model.intidconcesion_id;
                    user.last_modified_date = horadeTransaccion.Value;
                    user.created_by         = model.created_by;
                    user.str_rfc            = model.str_rfc;
                    user.str_direccion      = model.str_direccion;
                    user.str_cp             = model.str_cp;
                    user.str_razon_social   = model.str_razon_social;
                    user.intidciudad        = model.intidciudad;
                }


                var result = await _userManager.UpdateAsync(user);

                // await _userManager.RemoveFromRoleAsync(user, model.Rol);

                if (result.Succeeded)
                {
                    return(Ok());
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception ex)
            {
                //ModelState.AddModelError("token", ex.Message);
                //return BadRequest(ModelState);
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <ActionResult <UserToken> > CreateUser([FromBody] UserInfo model, string returnUrl)
        {
            try
            {
                ParametrosController    par = new ParametrosController(context);
                ActionResult <DateTime> horadeTransaccion = par.mtdObtenerFechaMexico();


                var usermail = await _userManager.FindByEmailAsync(model.Email);

                var usuario = await _userManager.FindByNameAsync(model.UserName);

                var tipous = await context.tbtiposusuarios.FirstOrDefaultAsync(x => x.strTipoUsuario == model.Rol);

                if (usermail == null && usuario == null)
                {
                    //String responseString = await client.GetStringAsync(UrlFecha);
                    //dynamic fecha = JsonConvert.DeserializeObject<dynamic>(responseString);
                    //string strFecha = fecha.resultado.ToString();

                    // DateTime horadeTransaccion = DateTime.Parse(strFecha);

                    if (tipous.strTipoUsuario == "MOVIL")
                    {
                        ActionResult <bool> ar = await mtdCreaUsuarioMovil(model, horadeTransaccion.Value, tipous.id);

                        if (ar.Value == true)
                        {
                            return(Ok());
                        }
                        else
                        {
                            return(Json(new { token = "Username or password invalid" }));
                        }
                    }
                    else
                    {
                        var user = new ApplicationUser
                        {
                            strNombre          = model.strNombre,
                            strApellidos       = model.strApellidos,
                            PhoneNumber        = model.PhoneNumber,
                            str_rfc            = model.str_rfc,
                            str_direccion      = model.str_direccion,
                            str_cp             = model.str_cp,
                            str_razon_social   = model.str_razon_social,
                            UserName           = model.UserName,
                            Email              = model.Email,
                            created_by         = model.created_by,
                            created_date       = horadeTransaccion.Value,
                            last_modified_by   = model.last_modified_by,
                            last_modified_date = horadeTransaccion.Value,
                            intidconcesion_id  = model.intidconcesion_id,
                            intIdTipoUsuario   = tipous.id,
                            intidciudad        = model.intidciudad,
                            bit_status         = true
                        };
                        strIdUsuario = user.Id;

                        var result = await _userManager.CreateAsync(user, model.Password);

                        if (result.Succeeded)
                        {
                            var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                            var confirmationLink = Url.Action("ConfirmarEmail", "Cuentas",
                                                              new { userId = user.Id, code = code }, Request.Scheme);
                            _logger.Log(LogLevel.Warning, confirmationLink);

                            await _emailSender.SendEmailAsync(user.Email, "Confirme su cuenta de correo",
                                                              "Por favor confirme su cuenta de correo haciendo clic en el siguiente enlace: <a href=\"" + confirmationLink + "\">link</a>");

                            return(Ok());
                        }
                        else
                        {
                            return(Json(new { token = "Username or password invalid" }));
                        }
                    }
                }

                else
                {
                    return(Json(new { token = "El correo o usuario ya se encuentra registrado" }));
                }
            }

            catch (Exception ex)
            {
                return(Json(new { token = ex.Message }));
            }
        }
        public async Task <ActionResult> mtdActualizaConcesiones(int id, [FromBody] ConcesionesConUsers concesiones)
        {
            string strIdUsuario = "";
            string strResult    = "";

            var concesion = await context.tbconcesiones.FirstOrDefaultAsync(x => x.id == id);

            var tipoUsuario = await context.tbtiposusuarios.FirstOrDefaultAsync(x => x.strTipoUsuario == "AGENTE VIAL");

            var usuarios = await context.NetUsers.Where(x => x.intidconcesion_id == id && x.intIdTipoUsuario == tipoUsuario.id).ToListAsync();

            var opcionesC = await context.tbpcionesconcesion.Where(x => x.int_id_concesion == id).ToListAsync();

            var tarifaC = await context.tbtarifas.FirstOrDefaultAsync(x => x.intidconcesion_id == id);



            ParametrosController    par  = new ParametrosController(context);
            ActionResult <DateTime> time = par.mtdObtenerFechaMexico();
            DateTime horadeTransaccion   = time.Value;

            //DateTime horadeTransaccion = DateTime.Now;

            if (concesion.id != id)
            {
                return(BadRequest());
            }

            //var strategy = context.Database.CreateExecutionStrategy();
            //await strategy.ExecuteAsync(async () =>
            //{
            using (IDbContextTransaction transaction = context.Database.BeginTransaction())
            {
                try
                {
                    var ciudadC = await context.tbciudades.Where(x => x.int_id_ciudad == concesion.intidciudad_cat).FirstOrDefaultAsync();

                    ciudadC.int_id_ciudad   = null;
                    ciudadC.str_desc_ciudad = null;
                    await context.SaveChangesAsync();

                    var ciudad = await context.tbciudades.Where(x => x.str_ciudad == concesiones.str_ciudad).FirstOrDefaultAsync();

                    ciudad.str_desc_ciudad = ciudad.str_ciudad;
                    ciudad.int_id_ciudad   = concesiones.intidciudad_cat;
                    await context.SaveChangesAsync();



                    concesion.str_clave          = concesiones.str_clave;
                    concesion.str_latitud        = concesiones.str_latitud;
                    concesion.str_longitud       = concesiones.str_longitud;
                    concesion.str_razon_social   = concesiones.str_razon_social;
                    concesion.str_domicilio      = concesiones.str_domicilio;
                    concesion.str_nombre_cliente = concesiones.str_nombre_cliente;
                    concesion.intidciudad_cat    = concesiones.intidciudad_cat;
                    concesion.intidciudad        = ciudad.id;
                    concesion.str_ciudad         = concesiones.str_ciudad;
                    concesion.str_telefono       = concesiones.str_telefono;
                    concesion.str_email          = concesiones.str_email;
                    concesion.str_rfc            = concesiones.str_rfc;
                    concesion.str_notas          = concesiones.str_notas;
                    concesion.str_poligono       = concesiones.str_poligono;
                    concesion.int_licencias      = concesiones.int_licencias;
                    concesion.dbl_costo_licencia = concesiones.dbl_costo_licencia;
                    concesion.dtm_fecha_ingreso  = concesiones.dtm_fecha_ingreso;


                    await context.SaveChangesAsync();

                    foreach (var item in concesiones.tarifas)
                    {
                        //tarifaC.str_tipo = item.str_tipo;
                        tarifaC.flt_tarifa_min        = item.flt_tarifa_min;
                        tarifaC.int_tiempo_minimo     = item.int_tiempo_minimo;
                        tarifaC.flt_tarifa_max        = item.flt_tarifa_max;
                        tarifaC.int_tiempo_maximo     = item.int_tiempo_maximo;
                        tarifaC.flt_tarifa_intervalo  = item.flt_tarifa_intervalo;
                        tarifaC.int_intervalo_minutos = item.int_intervalo_minutos;
                        tarifaC.bool_cobro_fraccion   = item.bool_cobro_fraccion;
                        //tarifaC.intidconcesion_id = id;
                        await context.SaveChangesAsync();
                    }


                    for (int i = 0; i < usuarios.Count; i++)
                    {
                        foreach (var item in concesiones.cuentas)
                        {
                            usuarios[i].UserName          = item.Email;
                            usuarios[i].Email             = item.Email;
                            usuarios[i].created_date      = horadeTransaccion;
                            usuarios[i].intidconcesion_id = concesion.id;
                            usuarios[i].intIdTipoUsuario  = tipoUsuario.id;
                            usuarios[i].intidciudad       = concesion.intidciudad;

                            await context.SaveChangesAsync();

                            await _userManager.RemovePasswordAsync(usuarios[i]);

                            var result = await _userManager.AddPasswordAsync(usuarios[i], item.PasswordHash);

                            i++;
                        }
                    }


                    context.tbpcionesconcesion.RemoveRange(opcionesC);


                    var     result2 = concesiones.opciones;
                    dynamic results = JsonConvert.DeserializeObject(concesiones.opciones.ToString());


                    foreach (var token in results["int_id_opcion"])
                    {
                        context.tbpcionesconcesion.Add(new ConcesionesOpciones()
                        {
                            int_id_opcion    = token,
                            int_id_concesion = concesion.id
                        });

                        await context.SaveChangesAsync();
                    }

                    //foreach (var item in concesiones.opciones)
                    //{
                    //    context.tbpcionesconcesion.Add(new ConcesionesOpciones()
                    //    {
                    //        int_id_opcion = item.int_id_opcion,
                    //        int_id_concesion = concesion.id
                    //    });

                    //    await context.SaveChangesAsync();
                    //}



                    transaction.Commit();
                }

                catch (Exception ex)
                {
                    transaction.Rollback();
                    strResult = ex.Message;
                }
            }
            //});

            return(Json(new { token = strResult }));
        }
        public async Task <ActionResult <Concesiones> > mtdIngresarConcesiones([FromBody] ConcesionesConUsersIngresar concesiones)
        {
            ParametrosController    par = new ParametrosController(context);
            ActionResult <DateTime> horadeTransaccion = par.mtdObtenerFechaMexico();
            string strIdUsuario = "";
            string strResult    = "";

            //var strategy = context.Database.CreateExecutionStrategy();
            //await strategy.ExecuteAsync(async () =>
            //{
            using (IDbContextTransaction transaction = context.Database.BeginTransaction())
            {
                try
                {
                    var ciudad = await context.tbciudades.Where(x => x.str_ciudad == concesiones.str_ciudad).FirstOrDefaultAsync();

                    concesiones.dtm_fecha_ingreso = horadeTransaccion.Value;

                    var tipoUsuario = await context.tbtiposusuarios.FirstOrDefaultAsync(x => x.strTipoUsuario == "AGENTE VIAL");

                    var concesion = new Concesiones
                    {
                        str_clave                     = concesiones.str_clave,
                        str_latitud                   = concesiones.str_latitud,
                        str_longitud                  = concesiones.str_longitud,
                        str_razon_social              = concesiones.str_razon_social,
                        str_domicilio                 = concesiones.str_domicilio,
                        str_nombre_cliente            = concesiones.str_nombre_cliente,
                        str_telefono                  = concesiones.str_telefono,
                        str_email                     = concesiones.str_email,
                        str_rfc                       = concesiones.str_rfc,
                        str_notas                     = concesiones.str_notas,
                        int_licencias                 = concesiones.int_licencias,
                        dbl_costo_licencia            = concesiones.dbl_costo_licencia,
                        dtm_fecha_ingreso             = concesiones.dtm_fecha_ingreso,
                        dtm_fecha_activacion_licencia = concesiones.dtm_fecha_activacion_licencia,
                        str_tipo                      = concesiones.str_tipo,
                        intidciudad                   = ciudad.id,
                        str_ciudad                    = concesiones.str_ciudad,
                        intidciudad_cat               = concesiones.intidciudad_cat,
                        bit_status                    = true
                    };

                    context.tbconcesiones.Add(concesion);

                    await context.SaveChangesAsync();

                    ciudad.int_id_ciudad   = concesiones.intidciudad_cat;
                    ciudad.str_desc_ciudad = concesiones.str_ciudad;
                    await context.SaveChangesAsync();

                    foreach (var item in concesiones.cuentas)
                    {
                        var user = new ApplicationUser
                        {
                            UserName          = item.Email,
                            Email             = item.Email,
                            created_date      = horadeTransaccion.Value,
                            intidconcesion_id = concesion.id,
                            intIdTipoUsuario  = tipoUsuario.id,
                            intidciudad       = ciudad.id,
                            EmailConfirmed    = true,
                            bit_status        = true
                        };
                        strIdUsuario = user.Id;

                        var result = await _userManager.CreateAsync(user, item.PasswordHash);
                    }


                    var     result2 = concesiones.opciones;
                    dynamic results = JsonConvert.DeserializeObject(concesiones.opciones.ToString());


                    foreach (var token in results["int_id_opcion"])
                    {
                        context.tbpcionesconcesion.Add(new ConcesionesOpciones()
                        {
                            int_id_opcion    = token,
                            int_id_concesion = concesion.id
                        });

                        await context.SaveChangesAsync();
                    }

                    foreach (var item in concesiones.tarifas)
                    {
                        context.tbtarifas.Add(new Tarifas()
                        {
                            //str_tipo = item.str_tipo,
                            flt_tarifa_min        = item.flt_tarifa_min,
                            int_tiempo_minimo     = item.int_tiempo_minimo,
                            flt_tarifa_max        = item.flt_tarifa_max,
                            int_tiempo_maximo     = item.int_tiempo_maximo,
                            flt_tarifa_intervalo  = item.flt_tarifa_intervalo,
                            int_intervalo_minutos = item.int_intervalo_minutos,
                            bool_cobro_fraccion   = item.bool_cobro_fraccion,
                            intidconcesion_id     = concesion.id
                        });

                        await context.SaveChangesAsync();
                    }


                    transaction.Commit();
                }

                catch (Exception ex)
                {
                    transaction.Rollback();
                    strResult = ex.Message;
                }
            }
            //});

            return(Json(new { token = strResult }));
        }