private async Task <UserToken> BuildToken(UserInfo userInfo, IList <string> roles, string Id, int inttipoUsuario) { var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.UniqueName, userInfo.UserName), new Claim("miValor", "Lo que yo quiera"), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) }; foreach (var rol in roles) { claims.Add(new Claim(ClaimTypes.Role, rol)); } var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:key"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); // Tiempo de expiración del token. En nuestro caso lo hacemos de una hora. var expiration = DateTime.UtcNow.AddHours(12); JwtSecurityToken token = new JwtSecurityToken( issuer: null, audience: null, claims: claims, expires: expiration, signingCredentials: creds); string strZona = " "; Concesiones concesion = null; var usuario = await context.NetUsers.FirstOrDefaultAsync(x => x.Id == Id); var tipo = await context.tbtiposusuarios.FirstOrDefaultAsync(x => x.id == inttipoUsuario); if (tipo.strTipoUsuario == "AGENTE VIAL") { var zona = await context.tbzonas.FirstOrDefaultAsync(x => x.id == usuario.intidzona); strZona = zona.str_poligono; } var permisos = await context.tbpermisos.Where(x => x.id_rol == tipo.id).OrderBy(x => x.id).ToListAsync(); if (tipo.strTipoUsuario != "MOVIL") { concesion = await context.tbconcesiones.FirstOrDefaultAsync(x => x.id == usuario.intidconcesion_id); } var ciudad = await context.tbciudades.FirstOrDefaultAsync(x => x.id == usuario.intidciudad); if (concesion == null && ciudad == null) { return(new UserToken() { Token = new JwtSecurityTokenHandler().WriteToken(token), Expiration = expiration, Id = Id, permisos = permisos, strRuta = strZona, strNombreUsuario = usuario.strNombre + " " + usuario.strApellidos }); } else { return(new UserToken() { Token = new JwtSecurityTokenHandler().WriteToken(token), Expiration = expiration, Id = Id, permisos = permisos, intIdCiudad = ciudad.id, strCiudad = ciudad.str_ciudad, strLatitud = ciudad.str_latitud, strLongitud = ciudad.str_longitud, intIdConcesion = concesion.id, strConcesion = concesion.str_razon_social, strRuta = strZona, strNombreUsuario = usuario.strNombre + " " + usuario.strApellidos }); } }
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 })); }