Ejemplo n.º 1
0
        // Busca a un usuario por su nombre de usuario (Normalizado con mayúscula)
        public async Task <FermeUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken)
        {
            api_docsClient clienteAPI = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
            JArray         usuarios   = (JArray)await clienteAPI.GetUsersUsingGETAsync();

            foreach (var usuario in usuarios)
            {
                var usuarioApi = usuario.ToObject <UserEntity>();
                if (usuarioApi.Email.ToUpper() == normalizedUserName)
                {
                    return(new FermeUser()
                    {
                        SecurityStamp = Guid.NewGuid().ToString(),
                        PasswordHash = usuarioApi.Password,
                        Email = usuarioApi.Email,
                        Login = usuarioApi.Email,
                        NormalizedUserName = usuarioApi.Email.ToUpper(),
                        NormalizedEmail = usuarioApi.Email.ToUpper(),
                        Id = usuarioApi.Id.GetValueOrDefault(),
                        UserName = usuarioApi.Email,
                        FirstName = usuarioApi.Name,
                        LastName = usuarioApi.LastName,
                        Address = usuarioApi.Address,
                        Rut = usuarioApi.Rut.Value,
                        Dv = usuarioApi.Dv,
                        Location = usuarioApi.Location
                    });
                }
            }
            return(null);
        }
Ejemplo n.º 2
0
        public async Task <List <SelectListItem> > ObtenerComunasPorCiudad(int idCiudad)
        {
            List <SelectListItem> listaComunas = new List <SelectListItem>();
            api_docsClient        clienteAPI   = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
            var comunasCiudad = ((JArray)await clienteAPI.GetLocationsByCityIdUsingGETAsync(idCiudad)).ToObject <List <LocationEntity> >();

            foreach (var comuna in comunasCiudad)
            {
                SelectListItem itemComuna = new SelectListItem();
                itemComuna.Text  = comuna.LocatioName;
                itemComuna.Value = comuna.Id.ToString();
                listaComunas.Add(itemComuna);
            }
            return(listaComunas);
        }
Ejemplo n.º 3
0
        public async Task <List <SelectListItem> > ObtenerCiudadesPorRegion(int idRegion)
        {
            List <SelectListItem> listaCiudades = new List <SelectListItem>();
            api_docsClient        clienteAPI    = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
            var ciudadesRegion = ((JArray)await clienteAPI.GetCitiesByRegionIdUsingGETAsync(idRegion)).ToObject <List <CityEntity> >();

            foreach (var ciudad in ciudadesRegion)
            {
                SelectListItem itemCiudad = new SelectListItem();
                itemCiudad.Text  = ciudad.CityName;
                itemCiudad.Value = ciudad.Id.ToString();
                listaCiudades.Add(itemCiudad);
            }
            return(listaCiudades);
        }
        public async Task <DetailProductModel> ObtenerProductoId(long id)
        {
            api_docsClient clienteAPI  = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
            var            productoAPI = ((JObject)await clienteAPI.SearchProductUsingGETAsync(id)).ToObject <ProductEntity>();
            var            producto    = new DetailProductModel()
            {
                Id             = productoAPI.Id.Value,
                CodigoProducto = productoAPI.ProductCode.Value,
                Nombre         = productoAPI.Name,
                Imagen         = productoAPI.ProductImage,
                Descripcion    = productoAPI.Description,
                Stock          = productoAPI.Stock.Value,
                Precio         = productoAPI.Price.Value,
                MarcaProducto  = productoAPI.BrandProduct
            };

            return(producto);
        }
Ejemplo n.º 5
0
        public async Task OnGetAsync(string returnUrl = null)
        {
            ReturnUrl      = returnUrl;
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            //Regiones
            api_docsClient clientAPI = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
            var            regiones  = ((JArray)await clientAPI.GetRegionUsingGETAsync()).ToObject <List <RegionEntity> >();

            Regiones = new List <SelectListItem>();
            foreach (var region in regiones)
            {
                Regiones.Add(new SelectListItem()
                {
                    Text  = region.RegionName,
                    Value = region.Id.ToString()
                });
            }
        }
        public async Task <String> Sale(SaleModel sale)
        {
            try{
                var                      identity         = HttpContext.User.Identity as ClaimsIdentity;
                api_docsClient           clienteAPI       = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
                List <ProductSaleEntity> productsSalesApi = new List <ProductSaleEntity>();
                foreach (var product in sale.Cart)
                {
                    ProductSaleEntity productSaleAPI = new ProductSaleEntity();
                    productSaleAPI.Product = new ProductEntity {
                        Id = product.Id
                    };
                    productSaleAPI.Quantity = 1;
                    productsSalesApi.Add(productSaleAPI);
                }
                SaleEntity saleApi = new SaleEntity
                {
                    Products_sale = productsSalesApi,
                    User          = new UserEntity
                    {
                        Id = long.Parse(identity.FindFirst("Id").Value)
                    },
                    Document = new DocumentEntity
                    {
                        Document_type = new DocumentTypeEntity
                        {
                            Id = int.Parse(sale.DocumentType)
                        }
                    },
                    Payment_method = new PaymentMethodEntity
                    {
                        Id = 1
                    }
                };
                Console.Out.WriteLine(JsonConvert.SerializeObject(saleApi));
                await clienteAPI.RecordedSaleUsingPOSTAsync(saleApi);
            }
            catch (Exception ex) {
                Console.Out.WriteLine(ex.Message);
                throw (ex);
            }

            return(JsonConvert.SerializeObject("OK"));
        }
        public async Task <List <ProductModel> > ObtenerProductos()
        {
            List <ProductModel> Productos  = new List <ProductModel>();
            api_docsClient      clienteAPI = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
            var productosAPI = ((JArray)await clienteAPI.GetProductsUsingGETAsync()).ToObject <List <ProductEntity> >();

            foreach (var productoAPI in productosAPI)
            {
                var producto = new ProductModel()
                {
                    Id             = productoAPI.Id.Value,
                    CodigoProducto = productoAPI.ProductCode.Value,
                    Nombre         = productoAPI.Name,
                    Imagen         = productoAPI.ProductImage,
                    Stock          = productoAPI.Stock.Value,
                    Precio         = productoAPI.Price.Value,
                    MarcaProducto  = productoAPI.BrandProduct
                };
                Productos.Add(producto);
            }
            return(Productos);
        }
Ejemplo n.º 8
0
        public async Task <FermeUser> FindByIdAsync(string userId, CancellationToken cancellationToken)
        {
            api_docsClient clienteAPI = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
            var            usuarioApi = ((JObject)await clienteAPI.SearchUserUsingGETAsync(long.Parse(userId))).ToObject <UserEntity>();

            return(new FermeUser()
            {
                SecurityStamp = Guid.NewGuid().ToString(),
                PasswordHash = usuarioApi.Password,
                Email = usuarioApi.Email,
                Login = usuarioApi.Email,
                NormalizedUserName = usuarioApi.Email.ToUpper(),
                NormalizedEmail = usuarioApi.Email.ToUpper(),
                Id = usuarioApi.Id.GetValueOrDefault(),
                UserName = usuarioApi.Email,
                FirstName = usuarioApi.Name,
                LastName = usuarioApi.LastName,
                Address = usuarioApi.Address,
                Rut = usuarioApi.Rut.Value,
                Dv = usuarioApi.Dv,
                Location = usuarioApi.Location
            });
        }
Ejemplo n.º 9
0
        // Realiza un POST en base a los datos ingresados en el formulario de registro
        public async Task <IdentityResult> CreateAsync(FermeUser user, CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            //TODO: Registro debe contener mas datos
            UserEntity usuario = new UserEntity()
            {
                Id        = 0,
                Name      = user.FirstName,
                BirthDate = user.BirthDate,
                Rut       = user.Rut,
                Dv        = user.Dv,
                Enable    = true,
                Genere    = user.Genere,
                LastName  = user.LastName + " " + user.SecondSurname,
                Email     = user.Email,
                Password  = user.PasswordHash,
                //Phone=user.Phone
                Address  = user.Address + " " + user.Block,
                Location = user.Location
            };

            // Llama  al clientFactory y pide un cliente para el backend
            api_docsClient clienteAPI = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
            JObject        response   = (JObject)await clienteAPI.SaveUserUsingPOSTAsync(usuario);

            if (response["status"].Value <string>() == "error")
            {
                var error = new IdentityError()
                {
                    Code        = "API",
                    Description = "Error guardando el usuario nuevo"
                };
                return(IdentityResult.Failed(error));
            }
            // Obtener ID del usuario recién creado
            var id = response["user_saved"]["id"].Value <int>();
            // Creación nuevo rol
            UserRoleEntity rol = new UserRoleEntity()
            {
                Id   = 0,
                Role = new RoleEntity()
                {
                    Id = 2
                },
                User = new UserEntity()
                {
                    Id = id
                }
            };
            // Guardar rol vía API
            JObject responseRol = (JObject)await clienteAPI.SaveUserRoleUsingPOSTAsync(rol);

            if (responseRol.ContainsKey("status"))
            {
                var error = new IdentityError()
                {
                    Code        = "API",
                    Description = "Error guardando rol del usuario"
                };
                return(IdentityResult.Failed(error));
            }
            return(IdentityResult.Success);
        }
Ejemplo n.º 10
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                api_docsClient clientAPI = new api_docsClient(_clientFactory.CreateClient("FermeBackendClient"));
                var            comunas   = ((JArray)await clientAPI.GetLocationsUsingGETAsync()).ToObject <List <LocationEntity> >();
                var            comuna    = (from c in comunas where c.Id.ToString() == Input.Location select c).FirstOrDefault();
                var            user      = new FermeUser
                {
                    UserName      = Input.Email,
                    Email         = Input.Email,
                    FirstName     = Input.FirstName,
                    LastName      = Input.LastName,
                    SecondSurname = Input.SecondSurname,
                    Rut           = int.Parse(Input.Rut),
                    Dv            = Input.Dv,
                    Genere        = Input.Genere,
                    //Phone=Input.Phone
                    Address   = Input.Address,
                    BirthDate = Input.BirthDate,
                    Block     = Input.Block,
                    Location  = comuna
                };

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

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email }));
                    }
                    else
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }