// GET: Usuarios
        public async Task <ActionResult> Index(int id, String Search)
        {
            if (objeto._signInManager.IsSignedIn(User))
            {
                var url = Request.Scheme + "://" + Request.Host.Value;
                //esta forma de realizar digamos la búsqueda no me ha convencido nada
                var objects = new Paginador <InputModelRegistrar>().paginador(await objeto._usuarios.GetUsuariosAsync(Search),
                                                                              id, "Usuarios", "Usuarios", "Index", url);
                var models = new DataPaginador <InputModelRegistrar>
                {
                    //posicion 2 tiene el query que contiene la coleccion de datos de todas las paginas que tenemos.
                    List            = (List <InputModelRegistrar>)objects[2],
                    Pagi_info       = (String)objects[0],
                    Pagi_navegacion = (String)objects[1],
                    Input           = new InputModelRegistrar()
                };

                return(View(models));
            }
            else
            {
                //aqui tal cual paso la vista más adelante lo mismo paso un modelo que quiero cargar o algo
                return(View("Index2"));
            }
        }
        public IActionResult HistoryTickets(int id, String Search)
        {
            if (_objeto._signInManager.IsSignedIn(User))
            {
                Object[] objects = new Object[3];
                var      url     = Request.Scheme + "://" + Request.Host.Value;
                var      lists   = _objeto._proveedores.getTickets(Search);
                if (0 < lists.Count)
                {
                    objects = new Paginador <TTickets>().paginador(lists, id, "Proveedores", "Historiales", "HistoryTickets", url);
                }
                else
                {
                    objects[0] = "No data";
                    objects[1] = "No data";
                    objects[2] = new List <TTickets>();
                }

                var models = new DataPaginador <TTickets>
                {
                    List            = (List <TTickets>)objects[2],
                    Pagi_info       = (String)objects[0],
                    Pagi_navegacion = (String)objects[1],
                    Input           = new TTickets()
                };
                listTicket = models.List;
                return(View(models));
            }
            else
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }
        }
        private DataPaginador <TProductos> getProductos(int id, String Search)
        {
            Object[] objects = new Object[3];
            var      url     = Request.Scheme + "://" + Request.Host.Value;
            var      data    = _objeto._productos.getTProductos(Search);

            if (0 < data.Count)
            {
                objects = new Paginador <TProductos>().paginador(data, id, "Productos", "Productos", "Inventario/Inventario", url);
            }
            else
            {
                objects[0] = "No data";
                objects[1] = "No data";
                objects[2] = new List <TProductos>();
            }
            var models = new DataPaginador <TProductos>
            {
                List            = (List <TProductos>)objects[2],
                Pagi_info       = (String)objects[0],
                Pagi_navegacion = (String)objects[1],
                Input           = new TProductos()
            };

            listProductos = models.List;
            return(models);
        }
 public IActionResult Index(int id, String Search)
 {
     if (_objeto._signInManager.IsSignedIn(User))
     {
         Object[] objects = new Object[3];
         var      url     = Request.Scheme + "://" + Request.Host.Value;
         var      data    = _objeto._compras.getTCompras(Search);
         if (0 < data.Count)
         {
             objects = new Paginador <TCompras>().paginador(data, id, "Compras", "Compras", "Index", url);
         }
         else
         {
             objects[0] = "No data";
             objects[1] = "No data";
             objects[2] = new List <TCompras>();
         }
         var models = new DataPaginador <TCompras>
         {
             List            = (List <TCompras>)objects[2],
             Pagi_info       = (String)objects[0],
             Pagi_navegacion = (String)objects[1],
             Input           = new TCompras()
         };
         listProductos = models.List;
         return(View(models));
     }
     else
     {
         return(RedirectToAction(nameof(HomeController.Index), "Home"));
     }
 }
示例#5
0
        public IActionResult Index(int id, String Search, int Registros)
        {
            if (_signInManager.IsSignedIn(User))
            {
                Object[] objects = new Object[3];
                var      data    = _lcategoria.getTCategoria(Search);

                if (0 < data.Count)
                {
                    var url = Request.Scheme + "://" + Request.Host.Value;
                    objects = new LPaginador <TCategoria>().paginador(_lcategoria.getTCategoria(Search),
                                                                      id, Registros, "Categorias", "Categorias/Categorias", "Index", url);
                }
                else
                {
                    objects[0] = "No hay datos que mostrar";
                    objects[1] = "No hay datos que mostrar";
                    objects[2] = new List <TCategoria>();
                }

                models = new DataPaginador <TCategoria>
                {
                    List            = (List <TCategoria>)objects[2],
                    Pagi_info       = (String)objects[0],
                    Pagi_navegacion = (String)objects[1],
                    Input           = new TCategoria()
                };
                return(View(models));
            }
            else
            {
                //return RedirectToAction(nameof(HomeController.Index), "Home");
                return(Redirect("/Home/Index"));
            }
        }
        public IActionResult Index(int Pag, int Registros, string Search)
        {
            List <Curso> cursos = null;

            if (Search != null)
            {
                cursos = _dbContext.Curso.Include(e => e.Categoria)
                         .Where(e => e.NombreCurso.Contains(Search) || e.Categoria.NombreCategoria.Contains(Search)).ToList();
            }
            else
            {
                cursos = _dbContext.Curso.Include(e => e.Categoria).ToList();
            }

            string host = Request.Scheme + "://" + Request.Host.Value;

            object[] resultado = new Paginador <Curso>().paginador(cursos, Pag, Registros, "Cursos", "Curso", "Index", host);

            DataPaginador <Curso> modelo = new DataPaginador <Curso>
            {
                Lista           = (List <Curso>)resultado[2],
                Pagi_info       = (string)resultado[0],
                Pagi_navegacion = (string)resultado[1]
            };

            return(View(modelo));
        }
示例#7
0
 public String GetCurso(DataPaginador <TCursos> model)
 {
     if (model.Input.Nombre != null && model.Input.Descripcion != null && model.Input.CategoriaID > 0)
     {
         if (model.Input.Horas.Equals(0))
         {
             return("Ingrese la cantidad de horas del curso");
         }
         else
         {
             if (model.Input.Costo.Equals(0.00M))
             {
                 return("Ingrese el costo del curso");
             }
             else
             {
                 var data = _curso.RegistrarCursoAsync(model);
                 return(JsonConvert.SerializeObject(data.Result));
             }
         }
     }
     else
     {
         return("Llene los campos requeridos");
     }
 }
        // GET: Usuarios
        public async Task <ActionResult> Index(int id, String Search)
        {
            if (objeto._signInManager.IsSignedIn(User))
            {
                var url = Request.Scheme + "://" + Request.Host.Value;
                //esta forma de realizar digamos la búsqueda no me ha convencido nada
                var objects = new Paginador <InputModelRegistrar>().paginador(await objeto._usuarios.GetUsuariosAsync(Search),
                                                                              id, "Usuarios", "Usuarios", "Index", url);
                var models = new DataPaginador <InputModelRegistrar>
                {
                    //posicion 2 tiene el query que contiene la coleccion de datos de todas las paginas que tenemos.
                    List            = (List <InputModelRegistrar>)objects[2],
                    Pagi_info       = (String)objects[0],
                    Pagi_navegacion = (String)objects[1],
                    Input           = new InputModelRegistrar()
                };

                /*
                 * var data = User.Claims.FirstOrDefault(u => u.Type.Equals("" +
                 *  "http://schemas.microsoft.com/ws/2008/06/identity/claims/role")).Value;
                 */
                //ViewData["Roles"] = _usuarios.userData(HttpContext);

                //esta linea ultima de codigo no hace falta pq lo que queremos es que nos pagine los usuarios
                //var model = await objeto._usuarios.getTUsuariosAsync();
                return(View(models));
            }
            return(View());
        }
 public IActionResult Ventas(int id)
 {
     if (_objeto._signInManager.IsSignedIn(User))
     {
         var      url     = Request.Scheme + "://" + Request.Host.Value;
         Object[] objects = new Object[3];
         var      data    = _context.TTempo_ventas.ToList();
         if (0 < data.Count)
         {
             objects = new Paginador <TTempo_ventas>().paginador(data, id, "", "Ventas", "Ventas", url);
         }
         else
         {
             objects[0] = "No hay datos que mostrar";
             objects[1] = "No hay datos que mostrar";
             objects[2] = new List <TTempo_ventas>();
         }
         models = new DataPaginador <TTempo_ventas>
         {
             List            = (List <TTempo_ventas>)objects[2],
             Pagi_info       = (String)objects[0],
             Pagi_navegacion = (String)objects[1],
             Input           = new TTempo_ventas(),
             dataCliente     = new DataCliente()
         };
         return(View(models));
     }
     else
     {
         return(RedirectToAction(nameof(HomeController.Index), "Home"));
     }
 }
示例#10
0
        private DataPaginador <InputModelRegistrar> getProveedores(int id, String Search)
        {
            Object[] objects = new Object[3];
            var      url     = Request.Scheme + "://" + Request.Host.Value;
            var      data    = _objeto._provedores.getProveedores(Search);

            if (data.Count > 0)
            {
                objects = new Paginador <InputModelRegistrar>().paginador(data, id, "Compras", "Compras", "Compras/Compras", url);
            }
            else
            {
                objects[0] = "No data";
                objects[1] = "No data";
                objects[2] = new List <InputModelRegistrar>();
            }
            var models = new DataPaginador <InputModelRegistrar>
            {
                List            = (List <InputModelRegistrar>)objects[2],
                Pagi_info       = (String)objects[0],
                Pagi_navegacion = (String)objects[1],
                Input           = new InputModelRegistrar()
            };

            return(models);
        }
示例#11
0
        public async Task <IdentityError> RegistrarCursoAsync(DataPaginador <TCursos> model)
        {
            IdentityError identityError;

            try
            {
                var imageByte = await _image.ByteAvatarImageAsync(model.AvatarImage, environment);

                var curso = new TCursos
                {
                    Nombre      = model.Input.Nombre,
                    Descripcion = model.Input.Descripcion,
                    Horas       = model.Input.Horas,
                    Costo       = model.Input.Costo,
                    Estado      = model.Input.Estado,
                    Image       = imageByte,
                    CategoriaID = model.Input.CategoriaID
                };
                context.Add(curso);
                context.SaveChanges();
                identityError = new IdentityError {
                    Code = "Done"
                };
            }
            catch (Exception e)
            {
                identityError = new IdentityError
                {
                    Code        = "Error",
                    Description = e.Message
                };
            }
            return(identityError);
        }
示例#12
0
        public IActionResult Index(int id, string filtrar)
        {
            Object[] objects = new Object[3];
            var      data    = _curso.getTCursos(filtrar);

            if (0 < data.Count)
            {
                var url = Request.Scheme + "://" + Request.Host.Value;
                objects = new LPaginador <TCursos>().paginador(data, id, 10, "", "Home", "Index", url);
            }
            else
            {
                objects[0] = "No hay datos que mostrar";
                objects[1] = "No hay datos que mostrar";
                objects[2] = new List <TCursos>();
            }

            models = new DataPaginador <TCursos>
            {
                List            = (List <TCursos>)objects[2],
                Pagi_info       = (String)objects[0],
                Pagi_navegacion = (String)objects[1],
                Input           = new TCursos(),
            };

            if (identityError != null)
            {
                models.Pagi_info = identityError.Description;
                identityError    = null;
            }
            //await CreateRolesAsync(_serviceProvider);
            return(View(models));
        }
 public IActionResult Users(int id, String filtrar, int registros)
 {
     if (_signInManager.IsSignedIn(User))
     {
         Object[] objects = new Object[3];
         var      data    = _user.getTUsuariosAsync(filtrar, 0);
         if (0 < data.Result.Count)
         {
             var url = Request.Scheme + "://" + Request.Host.Value;
             objects = new LPaginador <InputModelRegister>().paginador(data.Result,
                                                                       id, registros, "Users", "Users", "Users", url);
         }
         else
         {
             objects[0] = "No hay datos que mostrar";
             objects[1] = "No hay datos que mostrar";
             objects[2] = new List <InputModelRegister>();
         }
         models = new DataPaginador <InputModelRegister>
         {
             List            = (List <InputModelRegister>)objects[2],
             Pagi_info       = (String)objects[0],
             Pagi_navegacion = (String)objects[1],
             Input           = new InputModelRegister(),
         };
         return(View(models));
     }
     else
     {
         return(Redirect("/"));
     }
 }
示例#14
0
        public IActionResult Index(int Pag, int Registros, string Search)
        {
            List <Models.Empleado> Empleados = null;

            if (Search != null)
            {
                Empleados = _dbContext.Empleado.Where(e => e.NombreEmpleado.Contains(Search)).ToList();
            }
            else
            {
                Empleados = _dbContext.Empleado.ToList();
            }
            string host = Request.Scheme + "://" + Request.Host.Value;

            object[] resultado = new Paginador <Models.Empleado>().paginador(Empleados, Pag, Registros, "Empleados", "Empleado", "Index", host);


            DataPaginador <Models.Empleado> modelo = new DataPaginador <Models.Empleado>
            {
                Lista           = (List <Models.Empleado>)resultado[2],
                Pagi_info       = (string)resultado[0],
                Pagi_navegacion = (string)resultado[1]
            };

            return(View(modelo));
        }
        public IActionResult Index(int Pag, int Registros, string Search)
        {
            List <Models.Factura> Facturas = null;

            if (Search != null)
            {
                Facturas = _dbContext.Factura.Include(e => e.Pago)
                           .Where(e => e.NombreFactura.Contains(Search)).ToList();
            }
            else
            {
                Facturas = _dbContext.Factura.Include(e => e.Pago).ToList();
            }
            string host = Request.Scheme + "://" + Request.Host.Value;

            object[] resultado = new Paginador <Models.Factura>().paginador(Facturas, Pag, Registros, "Facturas", "Factura", "Index", host);


            DataPaginador <Models.Factura> modelo = new DataPaginador <Models.Factura>
            {
                Lista           = (List <Models.Factura>)resultado[2],
                Pagi_info       = (string)resultado[0],
                Pagi_navegacion = (string)resultado[1]
            };

            return(View(modelo));
        }
示例#16
0
        public IActionResult Posts(int id, String filtrar)
        {
            Object[] objects = new Object[3];
            var      data    = _post.getTPosts(filtrar, 0);

            if (0 < data.Count)
            {
                var url = Request.Scheme + "://" + Request.Host.Value;
                objects = new LPaginador <InputModelPosts>().paginador(data,
                                                                       id, 3, "Posts", "Posts", "Posts", url);
            }
            else
            {
                objects[0] = "No hay datos que mostrar";
                objects[1] = "No hay datos que mostrar";
                objects[2] = new List <InputModelPosts>();
            }
            models = new DataPaginador <InputModelPosts>
            {
                List            = (List <InputModelPosts>)objects[2],
                Pagi_info       = (String)objects[0],
                Pagi_navegacion = (String)objects[1],
                Input           = new InputModelPosts(),
            };
            return(View(models));
        }
示例#17
0
 public String GetCategorias(DataPaginador <TCategoria> model)
 {
     if (model.Input.Nombre != null && model.Input.Descripcion != null)
     {
         return("hola");
     }
     else
     {
         return("Llene los campos requeridos");
     }
 }
示例#18
0
 public String GetCategorias(DataPaginador <TCategoria> model)
 {
     if (model.Input.Nombre != null && model.Input.Descripcion != null)
     {
         var data = _lcategoria.RegistrarCategoria(model.Input);
         return(JsonConvert.SerializeObject(data));
     }
     else
     {
         return("Llene los campos requeridos");
     }
 }
示例#19
0
 public IActionResult Categoria()
 {
     if (_signInManager.IsSignedIn(User))
     {
         models = new DataPaginador <TCategoria>
         {
             Input = new TCategoria()
         };
         return(View(models));
     }
     else
     {
         return(RedirectToAction(nameof(HomeController.Index), "Home"));
     }
 }
示例#20
0
        public void OnGet(int id, String Search)
        {
            var proveedor = "";

            dataPaginador = getProveedores(id, Search);
            if (Search != null && 0 < dataPaginador.List.Count)
            {
                inputModel = dataPaginador.List.Last();
                proveedor  = inputModel.Proveedor;
            }
            Input = new InputModel
            {
                model     = dataPaginador,
                Proveedor = proveedor
            };
        }
示例#21
0
        [Authorize(Roles = "Admin")] // se restringe el acceso al metodo para mayor seguridad
        public IActionResult Cursos(int id, string Search, int Registros)
        {
            if (_signInManager.IsSignedIn(User))
            {
                Object[] objects = new Object[3];
                var      data    = _curso.getTCursos(Search);

                if (0 < data.Count)
                {
                    var url = Request.Scheme + "://" + Request.Host.Value;
                    objects = new LPaginador <TCursos>().paginador(data, id, Registros, "Cursos", "Cursos", "Cursos", url);
                }
                else
                {
                    objects[0] = "No hay datos que mostrar";
                    objects[1] = "No hay datos que mostrar";
                    objects[2] = new List <TCursos>();
                }


                models = new DataPaginador <TCursos>
                {
                    List            = (List <TCursos>)objects[2],
                    Pagi_info       = (String)objects[0],
                    Pagi_navegacion = (String)objects[1],
                    Categorias      = _lcategoria.getCategoria(),
                    Input           = new TCursos()
                };

                if (identityError != null)
                {
                    models.Pagi_info = identityError.Description;
                    identityError    = null;
                }
                return(View(models));
            }
            else
            {
                return(Redirect("/Home/Index"));
            }
        }
        public IActionResult Index(int id, String filtrar)
        {
            Object[] objects = new Object[3];
            var      data    = _curso.getTCursos(filtrar);

            if (0 < data.Count)
            {
                var url = Request.Scheme + "://" + Request.Host.Value;
                // Visualiza 10 paginas
                // no se pasa ninguna area
                // "Home" nombre del control
                // "Index" nombre de la accion
                // objects = new LPaginador<TCursos>().paginador(data, id, 10, "", "Home", "Index", url);
                objects = new LPaginador <TCursos>().paginador(data, id, 10, "", "Home", "Index", url);
            }
            else
            {
                // si no se obtiene datos
                objects[0] = "No hay datos que mostrar";
                objects[1] = "No hay datos que mostrar";
                objects[2] = new List <TCursos>();
            }

            models = new DataPaginador <TCursos>
            {
                List            = (List <TCursos>)objects[2],
                Pagi_info       = (String)objects[0],
                Pagi_navegacion = (String)objects[1],
                Input           = new TCursos(),
            };

            if (identityError != null)
            {
                // significa que contiene datos
                models.Pagi_info = identityError.Description;
                identityError    = null;
            }
            //await CreateRolesAsync(_serviceProvider);
            return(View(models));
        }
示例#23
0
        public async Task <IActionResult> Index(int id, String search, int Registros)
        {
            if (_signInManager.IsSignedIn(User))
            {
                Object[] objects = new Object[3];
                var      user    = await _userManager.GetUserAsync(User);

                var idUser = await _userManager.GetUserIdAsync(user);

                var data = _curso.Inscripciones(idUser, search);
                if (0 < data.Count)
                {
                    // contiene datos
                    var url = Request.Scheme + "://" + Request.Host.Value;
                    objects = new LPaginador <DataCurso>().paginador(data
                                                                     , id, Registros, "Inscripciones", "Inscripciones/Inscripciones", "Index", url);
                }
                else
                {
                    // No contiene Datos
                    objects[0] = "No hay datos que mostrar";
                    objects[1] = "No hay datos que mostrar";
                    objects[2] = new List <DataCurso>();
                }

                // se incializa el objeto model
                models = new DataPaginador <DataCurso>
                {
                    List            = (List <DataCurso>)objects[2],
                    Pagi_info       = (String)objects[0],
                    Pagi_navegacion = (String)objects[1],
                    Input           = new DataCurso()
                };
                return(View(models));
            }
            else
            {
                return(Redirect("/Home/Index"));
            }
        }
示例#24
0
 public IActionResult Index(int id, String Search)
 {
     if (_objeto._signInManager.IsSignedIn(User))
     {
         var url     = Request.Scheme + "://" + Request.Host.Value;
         var objects = new Paginador <TTickets>().paginador(_objeto._clientes.getTickets(Search)
                                                            , id, "Clientes", "Historiales", "Index", url);
         var models = new DataPaginador <TTickets>
         {
             List            = (List <TTickets>)objects[2],
             Pagi_info       = (String)objects[0],
             Pagi_navegacion = (String)objects[1],
             Input           = new TTickets()
         };
         listTicket = models.List;
         return(View(models));
     }
     else
     {
         return(RedirectToAction(nameof(HomeController.Index), "Home"));
     }
 }
示例#25
0
        public IActionResult Categoria(int id, String Search, int Registros)
        {
            if (_signInManager.IsSignedIn(User))
            {
                Object[] objects = new object[3];
                var      data    = _lcategoria.getTCategoria(Search);
                if (data.Count > 0)
                {
                    var url = Request.Scheme + "://" + Request.Host.Value;
                    objects = new LPaginador <TCategoria>().paginador(_lcategoria.getTCategoria(Search)
                                                                      , id, Registros, "Categorias", "Categorias", "Categoria", url);
                }
                else
                {
                    objects[0] = "No hay datos que mostrar";
                    objects[1] = "No hay datos que mostrar";
                    objects[2] = new List <TCategoria>();
                }

                models = new DataPaginador <TCategoria>
                {
                    List            = (List <TCategoria>)objects[2],
                    Pagi_info       = (String)objects[0],
                    Pagi_navegacion = (String)objects[1],
                    Input           = new TCategoria()
                };
                if (identityError != null)
                {
                    models.Pagi_info = identityError.Description;
                    identityError    = null;
                }

                return(View(models));
            }
            else
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }
        }
示例#26
0
        public async Task <IActionResult> Index(int id, String Search)
        {
            if (_objeto._signInManager.IsSignedIn(User))
            {
                var url     = Request.Scheme + "://" + Request.Host.Value;
                var objects = new Paginador <InputModelRegistrar>().paginador(await _objeto._usuarios.getTUsuariosAsync(Search)
                                                                              , id, "Usuarios", "Usuarios", "Index", url);
                var models = new DataPaginador <InputModelRegistrar>
                {
                    List            = (List <InputModelRegistrar>)objects[2],
                    Pagi_info       = (String)objects[0],
                    Pagi_navegacion = (String)objects[1],
                    Input           = new InputModelRegistrar()
                };

                return(View(models));
            }
            else
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }
        }
示例#27
0
        public async Task <IdentityError> RegistrarCursoAsync(DataPaginador <TCursos> model)
        {
            IdentityError identityError;

            try
            {
                if (model.Input.CursoID.Equals(0)) //vamos agregar un curso
                {
                    var imageByte = await _image.ByteAvatarImageAsync(model.AvatarImage, environment);

                    var curso = new TCursos
                    {
                        Curso       = model.Input.Curso,
                        Informacion = model.Input.Informacion,
                        Horas       = model.Input.Horas,
                        Costo       = model.Input.Costo,
                        Estado      = model.Input.Estado,
                        Image       = imageByte,
                        CategoriaID = model.Input.CategoriaID
                    };
                    context.Add(curso);
                    context.SaveChanges();
                }
                else // vamos a actualizar un curso
                {
                    byte[] imageByte;
                    if (model.AvatarImage != null) //  actualizar la imagen del curso si no es la dada por defecto
                    {
                        imageByte = await _image.ByteAvatarImageAsync(model.AvatarImage, environment);
                    }
                    else // Para no actualizar la imagen y dejar la misma
                    {
                        imageByte = model.Input.Image;
                    }
                    var curso = new TCursos
                    {
                        CursoID     = model.Input.CursoID,
                        Curso       = model.Input.Curso,
                        Informacion = model.Input.Informacion,
                        Horas       = model.Input.Horas,
                        Costo       = model.Input.Costo,
                        Estado      = model.Input.Estado,
                        Image       = imageByte,
                        CategoriaID = model.Input.CategoriaID
                    };
                    context.Update(curso);
                    context.SaveChanges();
                }

                identityError = new IdentityError {
                    Code = "Done"
                };
            }
            catch (Exception e)
            {
                identityError = new IdentityError
                {
                    Code        = "Error",
                    Description = e.Message
                };
            }
            return(identityError);
        }
示例#28
0
        public async Task <IdentityError> RegistrarCursoAsync(DataPaginador <TCursos> model)
        {
            IdentityError identityError;

            try
            {
                if (model.Input.CursosID.Equals(0))
                {
                    var imageByte = await _image.ByteAvatarImageAsync(model.AvatarImage, environment);

                    var curso = new TCursos
                    {
                        Curso       = model.Input.Curso,
                        Informacion = model.Input.Informacion,
                        Horas       = model.Input.Horas,
                        Costo       = model.Input.Costo,
                        Estado      = model.Input.Estado,
                        Image       = imageByte,
                        CategoriaID = model.Input.CategoriaID
                    };
                    context.Add(curso);
                    context.SaveChanges();
                }
                else
                {
                    byte[] imageByte;
                    if (model.AvatarImage != null)
                    {
                        imageByte = await _image.ByteAvatarImageAsync(model.AvatarImage, environment);
                    }
                    else
                    {
                        imageByte = model.Input.Image;
                    }
                    var curso = new TCursos
                    {
                        CursosID    = model.Input.CursosID,
                        Curso       = model.Input.Curso,
                        Informacion = model.Input.Informacion,
                        Horas       = model.Input.Horas,
                        Costo       = model.Input.Costo,
                        Estado      = model.Input.Estado,
                        Image       = imageByte,
                        CategoriaID = model.Input.CategoriaID
                    };
                    context.Update(curso);
                    context.SaveChanges();
                }

                identityError = new IdentityError {
                    Code = "Done"
                };
            }
            catch (Exception e)
            {
                identityError = new IdentityError
                {
                    Code        = "Error",
                    Description = e.Message
                };
            }
            return(identityError);
        }
        // Metodo que retorna una tarea
        // la palabra "async" significa que este metodo se va a sincronizar con otro metodo que va a realizar
        // una tarea indicando que este metodo tiene q esperar y sincronizarce hasta que ese metodo termine
        // la tarea este metodo va a proseguir ejecutanto su procedimiento
        public async Task <IdentityError> RegistrarCursoAsync(DataPaginador <TCursos> model)
        {
            IdentityError identityError;

            try
            {
                if (model.Input.CursoID.Equals(0))
                {
                    // MODO DE RESGISTRAR UN CURSO
                    // await le indica que este metodo tiene que ser esperado por
                    var imageByte = await _image.ByteAvatarImageAsync(model.AvatarImage, environment);

                    var curso = new TCursos
                    {
                        Curso       = model.Input.Curso,
                        Informacion = model.Input.Informacion,
                        Horas       = model.Input.Horas,
                        Costo       = model.Input.Costo,
                        Estado      = model.Input.Estado,
                        Image       = imageByte,
                        CategoriaID = model.Input.CategoriaID
                    };

                    // agrega un curso a la tabla TCurso de la BD.
                    context.Add(curso);
                    context.SaveChanges();
                }
                else
                {
                    // MODO DE ACTUALIZAR UN CURSO
                    byte[] imageByte;
                    if (model.AvatarImage != null)
                    {
                        // contriene una imagen que hemos cargado
                        // y se actualiza la imagen del curso
                        imageByte = await _image.ByteAvatarImageAsync(model.AvatarImage, environment);
                    }
                    else
                    {
                        // no se actuliza la imagen del curso
                        // y le propocionamos la misma imagen
                        imageByte = model.Input.Image;
                    }
                    var curso = new TCursos
                    {
                        CursoID     = model.Input.CursoID,
                        Curso       = model.Input.Curso,
                        Informacion = model.Input.Informacion,
                        Horas       = model.Input.Horas,
                        Costo       = model.Input.Costo,
                        Estado      = model.Input.Estado,
                        Image       = imageByte,
                        CategoriaID = model.Input.CategoriaID
                    };

                    // Actualiza el curso en la BD
                    context.Update(curso);
                    context.SaveChanges();
                }

                identityError = new IdentityError {
                    Code = "Done"
                };
            }
            catch (Exception e)
            {
                identityError = new IdentityError
                {
                    Code        = "Error",
                    Description = e.Message
                };
            }
            return(identityError);
        }