예제 #1
0
        public async Task <JsonResult> ListaRutas(int IdVendedor, DateTime fecha)
        {
            var lista = new RutasVisitasRequest();

            VendedorRequest vendedorRequest = new VendedorRequest();

            vendedorRequest.FechaRuta = fecha;
            int idEmpresaInt = 0;

            try
            {
                ApplicationDbContext db = new ApplicationDbContext();
                var userManager         = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));
                // obtener el idEmpresa
                var userWithClaims = (ClaimsPrincipal)User;
                var idEmpresa      = userWithClaims.Claims.First(c => c.Type == Constantes.Empresa).Value;
                // convertir el idEmpresa a int
                idEmpresaInt = Convert.ToInt32(idEmpresa);
                //** agregar el idEmpresa al vendedorRequest **
                vendedorRequest.idEmpresa = idEmpresaInt;
                //** agregar el idVendedor al vendedorRequest **
                vendedorRequest.IdVendedor = IdVendedor;
                lista = await ApiServicio.ObtenerElementoAsync1 <RutasVisitasRequest>(vendedorRequest,
                                                                                      new Uri(WebApp.BaseAddress),
                                                                                      "api/Vendedores/ListarRutaVendedores");

                return(Json(lista));
            }
            catch (Exception ex)
            {
                return(Json(false));
            }
        }
        public async Task <Response> PosicionPorUsuario(VendedorRequest vendedorRequest)
        {
            try
            {
                VendedorPositionRequest VendedorPositionRequests = new VendedorPositionRequest();
                var ultimaposicionVendedor = await db.LogRutaVendedor
                                             .Where(x => x.IdVendedor == vendedorRequest.IdVendedor)
                                             .OrderByDescending(x => x.Fecha)
                                             .Select(
                    x => new VendedorPositionRequest
                {
                    VendedorId     = x.IdVendedor,
                    Nombre         = x.Vendedor.AspNetUsers.Nombres,
                    Lat            = (float)x.Latitud,
                    Lon            = (float)x.Longitud,
                    Fecha          = (DateTime)x.Fecha,
                    EmpresaId      = x.Vendedor.AspNetUsers.IdEmpresa,
                    urlFoto        = x.Vendedor.AspNetUsers.Foto,
                    Correo         = x.Vendedor.AspNetUsers.Email,
                    Identificacion = x.Vendedor.AspNetUsers.Identificacion,
                    Telefono       = x.Vendedor.AspNetUsers.Telefono
                })
                                             .FirstOrDefaultAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Resultado = ultimaposicionVendedor,
                });
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
예제 #3
0
        public async Task <List <EventoRequest> > AgendaPorVendedor()
        {
            try
            {
                var vendedor = new VendedorRequest
                {
                    IdVendedor = Settings.userId,
                };

                var request = JsonConvert.SerializeObject(vendedor);
                var content = new StringContent(request, Encoding.UTF8, "application/json");
                var client  = new HttpClient();
                client.BaseAddress = new Uri(Constants.Constants.VentasWS);
                var url      = "api/Agendas/ListarEventosPorVendedor";
                var response = await client.PostAsync(url, content);

                if (!response.IsSuccessStatusCode)
                {
                    return(null);
                }
                var result = await response.Content.ReadAsStringAsync();

                var AgendaData = JsonConvert.DeserializeObject <List <EventoRequest> >(result);
                return(AgendaData);

                //  var log = JsonConvert.DeserializeObject<LogPosition>(result);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
예제 #4
0
        public async Task <ActionResult> VerVendedoresTiempoReal(int?id, string mensaje)
        {
            InicializarMensaje(mensaje);
            if (id != null)
            {
                var vendedor = new VendedorRequest {
                    IdVendedor = Convert.ToInt32(id)
                };

                var vendedorRequest = await ApiServicio.ObtenerElementoAsync1 <Response>(vendedor, new Uri(WebApp.BaseAddress)
                                                                                         , "api/Vendedores/ObtenerVendedor");

                if (vendedorRequest.IsSuccess)
                {
                    var vistaVendedor = JsonConvert.DeserializeObject <VendedorRequest>(vendedorRequest.Resultado.ToString());
                    var foto          = string.IsNullOrEmpty(vistaVendedor.Foto) != true?vistaVendedor.Foto.Replace("~", WebApp.BaseAddress) : "";

                    vistaVendedor.Foto = foto;
                    return(View(vistaVendedor));
                }

                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }
예제 #5
0
        public async Task <List <ClienteRequest> > ListarClientesPorVendedor(VendedorRequest vendedor)
        {
            try
            {
                var lista = await db.Cliente.Where(x => x.IdVendedor == vendedor.IdVendedor && x.Estado == 1).Select(x => new ClienteRequest
                {
                    Apellido          = x.Apellido,
                    ApellidosVendedor = x.Vendedor.AspNetUsers.Apellidos,
                    Email             = x.Email,
                    Firma             = x.Firma,
                    Foto            = x.Foto,
                    IdCliente       = x.idCliente,
                    IdTipoCliente   = x.idTipoCliente,
                    IdVendedor      = x.IdVendedor,
                    Latitud         = x.Latitud,
                    Longitud        = x.Longitud,
                    Nombre          = x.Nombre,
                    NombresVendedor = x.Vendedor.AspNetUsers.Nombres,
                    Telefono        = x.Telefono,
                    TipoCliente     = x.TipoCliente.Tipo,
                    Identificacion  = x.Identificacion,
                    Direccion       = x.Direccion,
                    IdEmpresa       = x.TipoCliente.IdEmpresa,
                    TelefonoMovil   = x.TelefonoMovil,
                    RazonSocial     = x.RazonSocial,
                }).ToListAsync();

                return(lista);
            }
            catch (Exception ex)
            {
                return(new List <ClienteRequest>());
            }
        }
예제 #6
0
        public async Task <Response> ObtenerVendedor(VendedorRequest vendedorRequest)
        {
            var vendedor = await db.Vendedor.Where(x => x.IdVendedor == vendedorRequest.IdVendedor)
                           .Select(y => new VendedorRequest
            {
                Identificacion       = y.AspNetUsers.Identificacion,
                NombreApellido       = y.AspNetUsers.Nombres + " " + y.AspNetUsers.Apellidos,
                Correo               = y.AspNetUsers.Email,
                Telefono             = y.AspNetUsers.Telefono,
                Foto                 = y.AspNetUsers.Foto,
                IdVendedor           = y.IdVendedor,
                DistanciaSeguimiento = y.DistanciaSeguimiento
            })
                           .FirstOrDefaultAsync();

            if (vendedor != null)
            {
                return(new Response {
                    IsSuccess = true, Resultado = vendedor
                });
            }
            return(new Response {
                IsSuccess = false
            });
        }
예제 #7
0
        public async Task <Response> InsertarVendedor(VendedorRequest vendedorRequest)
        {
            try
            {
                Vendedor vendedor = new Vendedor();
                vendedor.IdUsuario         = vendedorRequest.IdUsuario;
                vendedor.TiempoSeguimiento = vendedorRequest.TiempoSeguimiento;
                vendedor.IdSupervisor      = vendedorRequest.IdSupervisor;

                db.Vendedor.Add(vendedor);

                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.GuardadoSatisfactorio,
                    Resultado = vendedor.IdVendedor
                });
            }

            catch (Exception ex)
            {
                return(new Response

                {
                    IsSuccess = false,

                    Message = Mensaje.Error,
                });
            }
        }
        public async Task <Response> ListaSinSolucion(VendedorRequest vendedor)
        {
            try
            {
                db.Configuration.ProxyCreationEnabled = false;
                //Esta  es para  obtener los 5 ultimos productos de esta fecha
                var list = (from t in db.Compromiso
                            where t.Visita.IdVendedor == vendedor.IdVendedor
                            orderby t.Visita.Fecha
                            select t).Take(5);

                var lista = await db.Compromiso.Where(x => x.Visita.IdVendedor == vendedor.IdVendedor).ToListAsync();


                return(new Response
                {
                    IsSuccess = true,
                    Resultado = lista,
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = ex.Message
                });
            }
        }
예제 #9
0
        public async Task <Response> obtenerSupervisor(SupervisorRequest id)
        {
            var supervisor      = new SupervisorRequest();
            var vendedor        = new VendedorRequest();
            var listaVendedores = new List <VendedorRequest>();

            int idEmpresa = Convert.ToInt32(id.IdEmpresa);

            supervisor.IdEmpresa = idEmpresa;
            vendedor.idEmpresa   = idEmpresa;

            VendedoresController ctl = new VendedoresController();

            try
            {
                supervisor = await db.Supervisor.Where(m => m.IdSupervisor == id.IdSupervisor).Select(x => new SupervisorRequest
                {
                    IdUsuario      = x.AspNetUsers.Id,
                    IdSupervisor   = x.IdSupervisor,
                    Identificacion = x.AspNetUsers.Identificacion,
                    Nombres        = x.AspNetUsers.Nombres,
                    Apellidos      = x.AspNetUsers.Apellidos,
                    Direccion      = x.AspNetUsers.Direccion,
                    Telefono       = x.AspNetUsers.Telefono,
                    Correo         = x.AspNetUsers.Email,
                    IdEmpresa      = x.AspNetUsers.IdEmpresa,
                    IdGerente      = x.IdGerente
                }).SingleOrDefaultAsync();

                supervisor.ListaVendedores = await ctl.ListarVendedores(vendedor);

                supervisor.ListaVendedoresAsignados  = supervisor.ListaVendedores.Where(x => x.IdSupervisor == id.IdSupervisor).ToList();
                supervisor.ListaVendedoresSinAsignar = supervisor.ListaVendedores.Where(x => x.IdSupervisor != id.IdSupervisor).ToList();


                if (supervisor == null)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.RegistroNoEncontrado,
                    });
                }
                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.Satisfactorio,
                    Resultado = supervisor,
                });
            }

            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
예제 #10
0
        public async Task <List <EventoRequest> > ListarEventosPorVendedor(VendedorRequest vendedorRequest)
        {
            //Solo necesita el IdVendedor


            var lista = new List <EventoRequest>();

            try
            {
                var listaAgenda = await db.Agenda.Select(x => new EventoRequest
                {
                    idAgenda   = x.idAgenda,
                    Prioridad  = x.Prioridad,
                    FechaFin   = x.FechaFin,
                    FechaVista = x.FechaVista,
                    Notas      = x.Notas,
                    idCliente  = x.idCliente,
                    IdVendedor = x.IdVendedor
                }

                                                         ).Where(y => y.IdVendedor == vendedorRequest.IdVendedor).ToListAsync();


                var listaCompromiso = await db.Compromiso
                                      .Join(db.Visita, com => com.idVisita, v => v.idVisita, (com, v) => new { tcom = com, tv = v })
                                      .Join(db.Vendedor, conjunto => conjunto.tv.IdVendedor, ven => ven.IdVendedor, (conjunto, ven) => new { varConjunto = conjunto, tven = ven })
                                      .Where(y => y.tven.IdVendedor == vendedorRequest.IdVendedor)
                                      .Select(x => new EventoRequest
                {
                    idAgenda = 0,

                    IdCompromiso     = x.varConjunto.tcom.IdCompromiso,
                    IdTipoCompromiso = x.varConjunto.tcom.IdTipoCompromiso,
                    idVisita         = x.varConjunto.tcom.idVisita,
                    Descripcion      = x.varConjunto.tcom.Descripcion,
                    Solucion         = x.varConjunto.tcom.Solucion,

                    FechaVista = x.varConjunto.tv.Fecha,

                    IdVendedor = x.tven.IdVendedor
                }

                                              ).ToListAsync();

                lista = listaAgenda;

                for (int i = 0; i < listaCompromiso.Count; i++)
                {
                    lista.Add(listaCompromiso.ElementAt(i));
                }


                return(lista);
            }
            catch (Exception ex)
            {
                return(lista);
            }
        }
예제 #11
0
        public async Task <JsonResult> ListaClientes()
        {
            var lista = new List <ClienteRequest>();

            SupervisorRequest supervisorRequest = new SupervisorRequest();
            VendedorRequest   vendedorRequest   = new VendedorRequest();

            int idEmpresaInt = 0;;

            try
            {
                ApplicationDbContext db = new ApplicationDbContext();
                var userManager         = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));

                // obtener el idEmpresa
                var userWithClaims = (ClaimsPrincipal)User;
                var idEmpresa      = userWithClaims.Claims.First(c => c.Type == Constantes.Empresa).Value;

                // convertir el idEmpresa a int
                idEmpresaInt = Convert.ToInt32(idEmpresa);


                //** agregar el idEmpresa al vendedorRequest **
                vendedorRequest.idEmpresa = idEmpresaInt;


                var idUsuarioActual = User.Identity.GetUserId();

                supervisorRequest.IdUsuario = idUsuarioActual;
                supervisorRequest.IdEmpresa = idEmpresaInt;


                if (userManager.IsInRole(idUsuarioActual, "Supervisor"))
                {
                    // obtener el Id del supervisor
                    Response response = await ApiServicio.InsertarAsync(supervisorRequest,
                                                                        new Uri(WebApp.BaseAddress),
                                                                        "api/Vendedores/obtenerSupervisorPorIdUsuario");

                    supervisorRequest = JsonConvert.DeserializeObject <SupervisorRequest>(response.Resultado.ToString());


                    //** agregar el id del supervisor al vendedorRequest **
                    vendedorRequest.IdSupervisor = supervisorRequest.IdSupervisor;
                }


                lista = await ApiServicio.ObtenerElementoAsync1 <List <ClienteRequest> >(vendedorRequest,
                                                                                         new Uri(WebApp.BaseAddress),
                                                                                         "api/Vendedores/ListarClientesPorSupervisor");


                return(Json(lista));
            }
            catch (Exception ex)
            {
                return(Json(false));
            }
        }
예제 #12
0
        public async Task <ActionResult> CrearVendedor(string mensaje)
        {
            VendedorRequest vendedorRequest = new VendedorRequest();

            InicializarMensaje(mensaje);

            return(View(vendedorRequest));
        }
예제 #13
0
        public async Task <ActionResult> PerfilVendedor(string mensaje, int idVendedor)
        {
            SupervisorRequest supervisorRequest = new SupervisorRequest();
            VendedorRequest   vendedor          = new VendedorRequest();

            vendedor.IdVendedor = idVendedor;

            int idEmpresaInt = 0;

            try
            {
                var userWithClaims = (ClaimsPrincipal)User;
                var idEmpresa      = userWithClaims.Claims.First(c => c.Type == Constantes.Empresa).Value;

                idEmpresaInt = Convert.ToInt32(idEmpresa);

                vendedor.idEmpresa = idEmpresaInt;
            }
            catch (Exception ex)
            {
                InicializarMensaje(Mensaje.ErrorIdEmpresa);
            }



            InicializarMensaje("PerfilVendedor");

            try
            {
                vendedor = await ApiServicio.ObtenerElementoAsync1 <VendedorRequest>(vendedor,
                                                                                     new Uri(WebApp.BaseAddress),
                                                                                     "api/Vendedores/ListarClientesPorVendedor");

                var estadisticoVendedorRequest = await ApiServicio.ObtenerElementoAsync1 <EstadisticoVendedorRequest>(vendedor,
                                                                                                                      new Uri(WebApp.BaseAddress),
                                                                                                                      "api/Agendas/VerEstadisticosVendedor");

                vendedor.estadisticoVendedorRequest = estadisticoVendedorRequest;


                var foto = string.IsNullOrEmpty(vendedor.Foto) != true?vendedor.Foto.Replace("~", WebApp.BaseAddress) : "";

                vendedor.Foto = foto;


                InicializarMensaje("");
                return(View(vendedor));
            }
            catch
            {
                InicializarMensaje(Mensaje.Excepcion);
                return(View(vendedor));
            }
        }
예제 #14
0
        public async Task <ActionResult> MapaRuta(int?idVendedor, string mensaje)
        {
            InicializarMensaje(mensaje);
            if (idVendedor != null)
            {
                var vendedor = new VendedorRequest {
                    IdVendedor = Convert.ToInt32(idVendedor)
                };
                return(View(vendedor));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }
예제 #15
0
        public async Task <VendedorRequest> ListarClientesPorVendedor(VendedorRequest vendedorRequest)
        {
            //Necesarios : idEmpresa e idVendedor
            // solo muestra vendedores con estado 1("Activado")

            var vendedor      = new VendedorRequest();
            var listaClientes = new List <ClienteRequest>();

            int idEmpresa = Convert.ToInt32(vendedorRequest.idEmpresa);
            //EmpresaActual empresaActual = new EmpresaActual { IdEmpresa = idEmpresa };

            ClientesController ctl = new ClientesController();

            listaClientes = await ctl.ListarClientesPorVendedor(vendedorRequest);

            try
            {
                vendedor = await db.Vendedor.Select(x => new VendedorRequest
                {
                    IdVendedor        = x.IdVendedor,
                    TiempoSeguimiento = x.TiempoSeguimiento,
                    IdSupervisor      = x.IdSupervisor,
                    IdUsuario         = x.AspNetUsers.Id,
                    NombreApellido    = x.AspNetUsers.Nombres + " " + x.AspNetUsers.Apellidos,
                    TokenContrasena   = x.AspNetUsers.TokenContrasena,
                    Foto                 = x.AspNetUsers.Foto,
                    Estado               = x.AspNetUsers.Estado,
                    Correo               = x.AspNetUsers.Email,
                    Direccion            = x.AspNetUsers.Direccion,
                    Identificacion       = x.AspNetUsers.Identificacion,
                    Nombres              = x.AspNetUsers.Nombres,
                    Apellidos            = x.AspNetUsers.Apellidos,
                    Telefono             = x.AspNetUsers.Telefono,
                    idEmpresa            = vendedorRequest.idEmpresa,
                    DistanciaSeguimiento = x.DistanciaSeguimiento
                }
                                                    ).Where(x => x.idEmpresa == vendedorRequest.idEmpresa &&
                                                            x.IdVendedor == vendedorRequest.IdVendedor &&
                                                            x.Estado == 1
                                                            ).FirstOrDefaultAsync();

                vendedor.ListaClientes = listaClientes;


                return(vendedor);
            }
            catch (Exception ex)
            {
                return(vendedor);
            }
        }
예제 #16
0
        public async Task <List <VendedorRequest> > ListarVendedoresPorSupervisor(VendedorRequest vendedorRequest)
        {
            //Necesarios : idEmpresa e idSupervisor
            // solo muestra vendedores con estado 1("Activado")
            var super = db.Supervisor.Where(x => x.IdUsuario == vendedorRequest.IdUsuario).FirstOrDefault();

            var listaVendedores = new List <VendedorRequest>();

            try
            {
                listaVendedores = await db.Vendedor.Select(x => new VendedorRequest
                {
                    IdVendedor        = x.IdVendedor,
                    TiempoSeguimiento = x.TiempoSeguimiento,
                    IdSupervisor      = x.IdSupervisor,
                    IdUsuario         = x.AspNetUsers.Id,

                    TokenContrasena = x.AspNetUsers.TokenContrasena,
                    Foto            = x.AspNetUsers.Foto,
                    Estado          = x.AspNetUsers.Estado,
                    Correo          = x.AspNetUsers.Email,
                    Direccion       = x.AspNetUsers.Direccion,
                    Identificacion  = x.AspNetUsers.Identificacion,
                    Nombres         = x.AspNetUsers.Nombres,
                    Apellidos       = x.AspNetUsers.Apellidos,
                    NombreApellido  = x.AspNetUsers.Nombres + " " + x.AspNetUsers.Apellidos,
                    Telefono        = x.AspNetUsers.Telefono,
                    idEmpresa       = vendedorRequest.idEmpresa
                }

                                                           ).Where(x =>
                                                                   x.idEmpresa == vendedorRequest.idEmpresa &&
                                                                   x.IdSupervisor == vendedorRequest.IdSupervisor &&
                                                                   x.Estado == 1
                                                                   ).ToListAsync();



                return(listaVendedores);
            }
            catch (Exception ex)
            {
                return(listaVendedores);
            }
        }
예제 #17
0
        public async Task <Response> EditarVendedor(VendedorRequest vendedorRequest)
        {
            Response response = new Response();

            db.Configuration.ProxyCreationEnabled = false;


            try
            {
                var modelo = await db.Vendedor.Where(x => x.IdVendedor == vendedorRequest.IdVendedor).FirstOrDefaultAsync();


                if (modelo.TiempoSeguimiento != vendedorRequest.TiempoSeguimiento || modelo.IdSupervisor != vendedorRequest.IdSupervisor || modelo.DistanciaSeguimiento != vendedorRequest.DistanciaSeguimiento)
                {
                    modelo.TiempoSeguimiento    = vendedorRequest.TiempoSeguimiento;
                    modelo.IdSupervisor         = vendedorRequest.IdSupervisor;
                    modelo.DistanciaSeguimiento = vendedorRequest.DistanciaSeguimiento;
                    // db.Entry(modelo).State = EntityState.Modified;
                    await db.SaveChangesAsync();
                }

                response = new Response
                {
                    IsSuccess = true,
                    Message   = Mensaje.GuardadoSatisfactorio
                };

                return(response);
            }

            catch (Exception ex)
            {
                response = new Response
                {
                    IsSuccess = false,
                    Message   = Mensaje.Excepcion + ex,
                    Resultado = null
                };

                return(response);
            }
        }
예제 #18
0
        public async Task <List <ClienteRequest> > ListarClientesPorSupervisor(VendedorRequest vendedorRequest)
        {
            //Necesita: IdSupervisor
            // solo muestra vendedores con estado 1("Activado")

            var lista = new List <ClienteRequest>();

            try
            {
                lista = await db.Vendedor
                        .Join(db.Cliente
                              , rta => rta.IdVendedor, ind => ind.IdVendedor,
                              (rta, ind) => new { hm = rta, gh = ind })
                        .Join(db.Supervisor
                              , ind_1 => ind_1.hm.IdSupervisor, valor => valor.IdSupervisor,
                              (ind_1, valor) => new { ca = ind_1, rt = valor })
                        .Where(ds =>
                               ds.rt.IdSupervisor == vendedorRequest.IdSupervisor &&
                               ds.ca.gh.Estado == 1
                               )
                        .Select(t => new ClienteRequest
                {
                    IdVendedor = t.ca.hm.IdVendedor,
                    IdCliente  = t.ca.gh.idCliente,

                    Nombre   = t.ca.gh.Nombre,
                    Apellido = t.ca.gh.Apellido,

                    Latitud  = t.ca.gh.Latitud,
                    Longitud = t.ca.gh.Longitud
                })
                        .ToListAsync();


                return(lista);
            }
            catch (Exception ex)
            {
                return(lista);
            }
        }
예제 #19
0
        public async Task <VendedorRequest> VendedorByEmail(VendedorRequest vendedorRequest)
        {
            var Vendedor = new VendedorRequest();

            try
            {
                db.Configuration.ProxyCreationEnabled = false;
                //var resultAgente = await db.AspNetUsers.Where(x => x.Email == vendedorRequest.Correo).FirstOrDefaultAsync();


                Vendedor = await db.Vendedor.Select(x => new VendedorRequest
                {
                    IdVendedor        = x.IdVendedor,
                    TiempoSeguimiento = x.TiempoSeguimiento,
                    IdSupervisor      = x.IdSupervisor,
                    IdUsuario         = x.AspNetUsers.Id,
                    TokenContrasena   = x.AspNetUsers.TokenContrasena,
                    Foto           = x.AspNetUsers.Foto,
                    Estado         = x.AspNetUsers.Estado,
                    Correo         = x.AspNetUsers.Email,
                    Direccion      = x.AspNetUsers.Direccion,
                    Identificacion = x.AspNetUsers.Identificacion,
                    Nombres        = x.AspNetUsers.Nombres,
                    Apellidos      = x.AspNetUsers.Apellidos,
                    Telefono       = x.AspNetUsers.Telefono,
                    idEmpresa      = x.AspNetUsers.IdEmpresa
                }

                                                    ).Where(x => x.Correo == vendedorRequest.Correo).FirstOrDefaultAsync();


                return(Vendedor);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
예제 #20
0
        /// <summary>
        /// Obtiene el catalogo de vendedores
        /// </summary>
        /// <history>
        /// [emoguel] created 15/06/2016
        /// </history>
        public async static Task <Vendedor[]> GetSalesMen()
        {
            Vendedor[] Vendedores = await Task.Run(() =>
            {
                VendedorRequest request   = new VendedorRequest();
                VendedorResponse response = null;
                Vendedor[] vendedor       = null;

                response = Current().ObtenerCatalogoVendedores(request);
                //si ocurrio un error
                if (response.HasErrors)
                {
                    throw new Exception(response.ExceptionInfo.Message);
                }
                else
                {
                    vendedor = response.Data;
                }

                return(vendedor);
            });

            return(Vendedores);
        }
예제 #21
0
        public async Task <ActionResult> CalendarioIndex(int idVendedor)
        {
            SupervisorRequest supervisorRequest = new SupervisorRequest();
            VendedorRequest   vendedorRequest   = new VendedorRequest();

            var lista        = new List <VendedorRequest>();
            int idEmpresaInt = 0;


            try
            {
                var userWithClaims = (ClaimsPrincipal)User;
                var idEmpresa      = userWithClaims.Claims.First(c => c.Type == Constantes.Empresa).Value;

                idEmpresaInt = Convert.ToInt32(idEmpresa);

                vendedorRequest.idEmpresa  = idEmpresaInt;
                vendedorRequest.IdVendedor = idVendedor;
            }
            catch (Exception ex)
            {
                InicializarMensaje(Mensaje.ErrorIdEmpresa);
                return(View(lista));
            }



            try
            {
                // Obtener supervisor
                ApplicationDbContext db = new ApplicationDbContext();

                var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));


                var idUsuarioActual = User.Identity.GetUserId();

                supervisorRequest.IdUsuario = idUsuarioActual;
                supervisorRequest.IdEmpresa = idEmpresaInt;

                if (userManager.IsInRole(idUsuarioActual, "Supervisor"))
                {
                    Response response = await ApiServicio.InsertarAsync(supervisorRequest,
                                                                        new Uri(WebApp.BaseAddress),
                                                                        "api/Vendedores/obtenerSupervisorPorIdUsuario");

                    supervisorRequest            = JsonConvert.DeserializeObject <SupervisorRequest>(response.Resultado.ToString());
                    vendedorRequest.IdSupervisor = supervisorRequest.IdSupervisor;
                }



                // Carga de combo

                lista = await ApiServicio.ObtenerElementoAsync1 <List <VendedorRequest> >(vendedorRequest, new Uri(WebApp.BaseAddress)
                                                                                          , "api/Vendedores/ListarVendedoresPorSupervisor");

                lista.Add(new VendedorRequest {
                    IdVendedor     = 0,
                    NombreApellido = "Seleccione"
                });

                lista = lista.OrderBy(x => x.IdVendedor).ToList();

                ViewBag.IdVendedor = new SelectList(lista, "IdVendedor", "NombreApellido");



                // Lista de eventos para cargar la agenda
                var listaEventos = await ApiServicio.ObtenerElementoAsync1 <List <EventoRequest> >(vendedorRequest, new Uri(WebApp.BaseAddress)
                                                                                                   , "api/Agendas/ListarEventosPorVendedor");


                return(View(listaEventos));
            }
            catch (Exception ex)
            {
                InicializarMensaje(Mensaje.Excepcion);
                return(View());
            }
        }
예제 #22
0
        public async Task <ActionResult> EditarVendedor(HttpPostedFileBase fileUpload, VendedorRequest vendedorRequest)
        {
            InicializarMensaje(Mensaje.GuardadoSatisfactorio);
            int idEmpresaInt = 0;


            try
            {
                var userWithClaims = (ClaimsPrincipal)User;
                var idEmpresa      = userWithClaims.Claims.First(c => c.Type == Constantes.Empresa).Value;

                idEmpresaInt = Convert.ToInt32(idEmpresa);
                vendedorRequest.idEmpresa         = idEmpresaInt;
                vendedorRequest.TiempoSeguimiento = 5;
            }
            catch (Exception ex)
            {
                InicializarMensaje(Mensaje.ErrorIdEmpresa);
                return(View(vendedorRequest));
            }


            if (!ModelState.IsValid)
            {
                InicializarMensaje(Mensaje.ModeloInvalido);
                return(View(vendedorRequest));
            }

            Response response = new Response();

            ApplicationDbContext db = new ApplicationDbContext();

            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    var userManager2     = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));
                    var InstanciaUsuario = await userManager2.FindByEmailAsync(vendedorRequest.Correo);

                    if (InstanciaUsuario != null && InstanciaUsuario.Id != vendedorRequest.IdUsuario)
                    {
                        InicializarMensaje(Mensaje.ExisteCorreo);
                        return(View(vendedorRequest));
                    }

                    var ExisteUsuario = await ApiServicio.ObtenerElementoAsync1 <List <VendedorRequest> >(vendedorRequest,
                                                                                                          new Uri(WebApp.BaseAddress),
                                                                                                          "api/Vendedores/BuscarUsuariosVendedoresPorEmpresaEIdentificacion");

                    if (ExisteUsuario.Count > 0)
                    {
                        for (int i = 0; i < ExisteUsuario.Count; i++)
                        {
                            if (ExisteUsuario.ElementAt(i).IdUsuario != vendedorRequest.IdUsuario)
                            {
                                InicializarMensaje(Mensaje.ExisteIdentificacionUsuario);
                                return(View(vendedorRequest));
                            }
                        }
                    }


                    var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));
                    InstanciaUsuario = await userManager.FindByIdAsync(vendedorRequest.IdUsuario);

                    InstanciaUsuario.UserName       = vendedorRequest.Correo;
                    InstanciaUsuario.Email          = vendedorRequest.Correo;
                    InstanciaUsuario.Identificacion = vendedorRequest.Identificacion;
                    InstanciaUsuario.Nombres        = vendedorRequest.Nombres;
                    InstanciaUsuario.Apellidos      = vendedorRequest.Apellidos;
                    InstanciaUsuario.Direccion      = vendedorRequest.Direccion;
                    InstanciaUsuario.Telefono       = vendedorRequest.Telefono;

                    InstanciaUsuario.Estado    = 1;
                    InstanciaUsuario.IdEmpresa = idEmpresaInt;


                    db.Entry(InstanciaUsuario).State = EntityState.Modified;
                    await db.SaveChangesAsync();



                    response = await ApiServicio.InsertarAsync(vendedorRequest,
                                                               new Uri(WebApp.BaseAddress),
                                                               "api/Vendedores/EditarVendedor");


                    if (response.IsSuccess)
                    {
                        if (fileUpload != null)
                        {
                            var idVendedor = response.Resultado;


                            var fichero = readFileContents(fileUpload);
                            var foto    = new ArchivoRequest {
                                Id = Convert.ToString(vendedorRequest.IdVendedor), Array = fichero, Tipo = 3
                            };


                            var fotoRequest = await ApiServicio.InsertarAsync <Response>(foto, new Uri(WebApp.BaseAddress)
                                                                                         , "Api/Archivos/Insertar");

                            if (fotoRequest.IsSuccess)
                            {
                                InstanciaUsuario.Foto = fotoRequest.Resultado.ToString();

                                db.Entry(InstanciaUsuario).State = EntityState.Modified;
                                await db.SaveChangesAsync();

                                transaction.Commit();

                                return(RedirectToAction("VendedorIndex", new { mensaje = response.Message }));
                            }
                            else
                            {
                                transaction.Rollback();
                                return(RedirectToAction("VendedorIndex", new { mensaje = Mensaje.Error }));
                            }
                        }
                        else
                        {
                            transaction.Commit();

                            return(RedirectToAction("VendedorIndex", new { mensaje = response.Message }));
                        }
                    }

                    transaction.Rollback();

                    ViewData["Error"] = response.Message;
                    return(View(vendedorRequest));
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    ViewData["Error"] = response.Message;
                    return(View(vendedorRequest));
                }
            }
        }
예제 #23
0
        public async Task <ActionResult> VendedorIndex(string mensaje)
        {
            List <VendedorRequest> lista             = new List <VendedorRequest>();
            VendedorRequest        vendedorRequest   = new VendedorRequest();
            SupervisorRequest      supervisorRequest = new SupervisorRequest();

            int idEmpresaInt = 0;

            Response response = new Response();

            InicializarMensaje(mensaje);


            try
            {
                var userWithClaims = (ClaimsPrincipal)User;
                var idEmpresa      = userWithClaims.Claims.First(c => c.Type == Constantes.Empresa).Value;

                idEmpresaInt = Convert.ToInt32(idEmpresa);

                vendedorRequest.idEmpresa = idEmpresaInt;
            }
            catch (Exception ex) {
                InicializarMensaje(Mensaje.ErrorIdEmpresa);
                return(View(lista));
            }


            try
            {
                ApplicationDbContext db = new ApplicationDbContext();

                var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));


                var idUsuarioActual = User.Identity.GetUserId();

                supervisorRequest.IdUsuario = idUsuarioActual;
                supervisorRequest.IdEmpresa = idEmpresaInt;

                if (userManager.IsInRole(idUsuarioActual, "Supervisor"))
                {
                    response = await ApiServicio.InsertarAsync(supervisorRequest,
                                                               new Uri(WebApp.BaseAddress),
                                                               "api/Vendedores/obtenerSupervisorPorIdUsuario");

                    supervisorRequest            = JsonConvert.DeserializeObject <SupervisorRequest>(response.Resultado.ToString());
                    vendedorRequest.IdSupervisor = supervisorRequest.IdSupervisor;

                    lista = await ApiServicio.ObtenerElementoAsync1 <List <VendedorRequest> >(vendedorRequest,
                                                                                              new Uri(WebApp.BaseAddress),
                                                                                              "api/Vendedores/ListarVendedoresPorSupervisor");
                }
                else //(userManager.IsInRole(idUsuarioActual, "GerenteComercial"))
                {
                    lista = await ApiServicio.ObtenerElementoAsync1 <List <VendedorRequest> >(vendedorRequest,
                                                                                              new Uri(WebApp.BaseAddress),
                                                                                              "api/Vendedores/ListarVendedores");
                }



                lista.FirstOrDefault().NumeroMenu = 1;
                return(View(lista));
            }
            catch (Exception ex)
            {
                //InicializarMensaje(Mensaje.Excepcion);
                //lista.FirstOrDefault().NumeroMenu = 1;
                return(View(lista));
            }
        }
예제 #24
0
        public async Task <ActionResult> CrearVendedor(HttpPostedFileBase fileUpload, VendedorRequest vendedorRequest)
        {
            InicializarMensaje("");

            int idEmpresaInt = 0;

            SupervisorRequest supervisorRequest = new SupervisorRequest();

            var guardar = false;



            try
            {
                var userWithClaims = (ClaimsPrincipal)User;
                var idEmpresa      = userWithClaims.Claims.First(c => c.Type == Constantes.Empresa).Value;


                idEmpresaInt = Convert.ToInt32(idEmpresa);
                vendedorRequest.idEmpresa         = idEmpresaInt;
                vendedorRequest.TiempoSeguimiento = 5;
            }
            catch (Exception ex)
            {
                InicializarMensaje(Mensaje.ErrorIdEmpresa);
                return(View(vendedorRequest));
            }


            if (!ModelState.IsValid)
            {
                InicializarMensaje(Mensaje.ModeloInvalido);
                return(View(vendedorRequest));
            }


            ApplicationDbContext db       = new ApplicationDbContext();
            Response             response = new Response();


            try
            {
                var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));


                var idUsuarioActual = User.Identity.GetUserId();

                supervisorRequest.IdUsuario = idUsuarioActual;
                supervisorRequest.IdEmpresa = idEmpresaInt;

                if (userManager.IsInRole(idUsuarioActual, "Supervisor"))
                {
                    response = await ApiServicio.InsertarAsync(supervisorRequest,
                                                               new Uri(WebApp.BaseAddress),
                                                               "api/Vendedores/obtenerSupervisorPorIdUsuario");

                    supervisorRequest            = JsonConvert.DeserializeObject <SupervisorRequest>(response.Resultado.ToString());
                    vendedorRequest.IdSupervisor = supervisorRequest.IdSupervisor;

                    guardar = true;
                }

                else if (userManager.IsInRole(idUsuarioActual, "GerenteGeneral"))
                {
                    guardar = true;
                }


                if (guardar == false)
                {
                    InicializarMensaje("No tiene permisos para agregar un nuevo vendedor");
                    return(View(vendedorRequest));
                }

                var userManager2     = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(db));
                var InstanciaUsuario = await userManager2.FindByEmailAsync(vendedorRequest.Correo);

                if (InstanciaUsuario != null)
                {
                    InicializarMensaje(Mensaje.ExisteCorreo);
                    return(View(vendedorRequest));
                }

                var ExisteUsuario = await ApiServicio.ObtenerElementoAsync1 <List <VendedorRequest> >(vendedorRequest,
                                                                                                      new Uri(WebApp.BaseAddress),
                                                                                                      "api/Vendedores/BuscarUsuariosVendedoresPorEmpresaEIdentificacion");

                if (ExisteUsuario.Count > 0)
                {
                    InicializarMensaje(Mensaje.ExisteIdentificacionUsuario);
                    return(View(vendedorRequest));
                }

                var user = new ApplicationUser
                {
                    UserName       = vendedorRequest.Correo,
                    Email          = vendedorRequest.Correo,
                    Identificacion = vendedorRequest.Identificacion,

                    Nombres   = vendedorRequest.Nombres,
                    Apellidos = vendedorRequest.Apellidos,
                    Direccion = vendedorRequest.Direccion,
                    Telefono  = vendedorRequest.Telefono,

                    Estado = 1,

                    IdEmpresa = idEmpresaInt
                };



                var result = await userManager.CreateAsync(user, "A123345.1a");

                db.SaveChanges();

                if (result != null)
                {
                    InstanciaUsuario = await userManager2.FindByEmailAsync(vendedorRequest.Correo);

                    vendedorRequest.IdUsuario = InstanciaUsuario.Id;


                    userManager.AddToRole(InstanciaUsuario.Id, "Vendedor");



                    response = await ApiServicio.InsertarAsync(vendedorRequest,
                                                               new Uri(WebApp.BaseAddress),
                                                               "api/Vendedores/InsertarVendedor");



                    if (response.IsSuccess)
                    {
                        if (fileUpload != null)
                        {
                            var idVendedor = response.Resultado;


                            var fichero = readFileContents(fileUpload);
                            var foto    = new ArchivoRequest {
                                Id = Convert.ToString(idVendedor), Array = fichero, Tipo = 3
                            };


                            var fotoRequest = await ApiServicio.InsertarAsync <Response>(foto, new Uri(WebApp.BaseAddress)
                                                                                         , "Api/Archivos/Insertar");

                            if (fotoRequest.IsSuccess)
                            {
                                user.Foto = fotoRequest.Resultado.ToString();

                                db.Entry(user).State = EntityState.Modified;
                                await db.SaveChangesAsync();


                                var recuperarContrasenaRequest0 = new RecuperarContrasenaRequest();
                                recuperarContrasenaRequest0.Email = user.Email;

                                var response0 = await ApiServicio.ObtenerElementoAsync1 <Response>(recuperarContrasenaRequest0, new Uri(WebApp.BaseAddress)
                                                                                                   , "api/Usuarios/GenerarCodigo");

                                return(RedirectToAction("VendedorIndex", new { mensaje = response.Message }));
                            }
                            else
                            {
                                InicializarMensaje(Mensaje.Error);
                                return(View(vendedorRequest));
                            }
                        }

                        var recuperarContrasenaRequest = new RecuperarContrasenaRequest();
                        recuperarContrasenaRequest.Email = user.Email;

                        var response2 = await ApiServicio.ObtenerElementoAsync1 <Response>(recuperarContrasenaRequest, new Uri(WebApp.BaseAddress)
                                                                                           , "api/Usuarios/GenerarCodigo");

                        return(RedirectToAction("VendedorIndex", new { mensaje = response.Message }));
                    }
                }

                InicializarMensaje("No se ha podido crear un usuario");
                return(View(vendedorRequest));
            }
            catch (Exception ex)
            {
                ViewData["Error"] = Mensaje.Error;
                return(View(vendedorRequest));
            }
        }
예제 #25
0
        public async Task <List <UbicacionPersonaRequest> > ListarVendedoresConUbicacionPorSupervisor(VendedorRequest vendedorRequest)
        {
            // Necesarios: IdEmpresa E idSupervisor
            // solo muestra vendedores con estado 1("Activado")


            var listaVendedores = new List <UbicacionPersonaRequest>();


            //var vLongitud = db.LogRutaVendedor.Where(y => y.IdVendedor == 16 && y.Fecha == DateTime.Today).OrderByDescending(y => y.Fecha).FirstOrDefault().Longitud;

            try
            {
                listaVendedores = await db.Vendedor.Select(x => new UbicacionPersonaRequest
                {
                    IdVendedor        = x.IdVendedor,
                    TiempoSeguimiento = x.TiempoSeguimiento,
                    IdSupervisor      = x.IdSupervisor,
                    IdUsuario         = x.AspNetUsers.Id,

                    TokenContrasena = x.AspNetUsers.TokenContrasena,
                    Foto            = x.AspNetUsers.Foto,
                    Estado          = x.AspNetUsers.Estado,
                    Correo          = x.AspNetUsers.Email,
                    Direccion       = x.AspNetUsers.Direccion,
                    Identificacion  = x.AspNetUsers.Identificacion,
                    Nombres         = x.AspNetUsers.Nombres,
                    Apellidos       = x.AspNetUsers.Apellidos,
                    Telefono        = x.AspNetUsers.Telefono,
                    idEmpresa       = vendedorRequest.idEmpresa,

                    //ListaUbicaciones = db.LogRutaVendedor.Where(y => y.IdVendedor == x.IdVendedor).ToList(),

                    Latitud  = db.LogRutaVendedor.Where(y => y.IdVendedor == x.IdVendedor).OrderByDescending(y => y.Fecha).FirstOrDefault().Latitud,
                    Longitud = db.LogRutaVendedor.Where(y => y.IdVendedor == x.IdVendedor).OrderByDescending(y => y.Fecha).FirstOrDefault().Longitud
                }


                                                           ).Where(x =>
                                                                   x.idEmpresa == vendedorRequest.idEmpresa &&
                                                                   x.IdSupervisor == vendedorRequest.IdSupervisor &&
                                                                   x.Estado == 1
                                                                   ).ToListAsync();



                return(listaVendedores);
            }
            catch (Exception ex)
            {
                return(listaVendedores);
            }
        }
예제 #26
0
        public async Task <RutasVisitasRequest> ListarRutaVendedores(VendedorRequest vendedorRequest)
        {
            // Necesarios: IdEmpresa e IdVendedor
            // solo muestra vendedores con estado 1("Activado")
            db.Configuration.ProxyCreationEnabled = false;

            //var lista = new List<RutaRequest>();
            //var lista2 = new List<RutaRequest>();
            RutasVisitasRequest RutaVisitas = new RutasVisitasRequest();
            var ListaRuta = new List <RutaRequest>();
            var Lista2    = new List <RutaRequest>();


            DateTime hoy = vendedorRequest.FechaRuta;

            try
            {
                //Lista para la ruta del vendedor
                ListaRuta = await db.LogRutaVendedor
                            .Where(
                    x => x.Vendedor.AspNetUsers.IdEmpresa == vendedorRequest.idEmpresa &&
                    x.Vendedor.AspNetUsers.Estado == 1 &&
                    x.Vendedor.IdVendedor == vendedorRequest.IdVendedor && DbFunctions.TruncateTime(x.Fecha.Value) == hoy)
                            .Select(
                    x => new RutaRequest
                {
                    IdLogRutaVendedor = x.IdLogRutaVendedor,
                    IdVendedor        = x.IdVendedor,
                    Fecha             = x.Fecha,
                    Latitud           = x.Latitud,
                    Longitud          = x.Longitud
                }
                    ).OrderBy(or => or.Fecha).ToListAsync();

                //Lista de Visitas
                Lista2 = await db.Visita
                         .Where(y => y.Vendedor.AspNetUsers.IdEmpresa == vendedorRequest.idEmpresa &&
                                y.Vendedor.AspNetUsers.Estado == 1 &&
                                y.Vendedor.IdVendedor == vendedorRequest.IdVendedor && DbFunctions.TruncateTime(y.Fecha) == hoy)
                         .Select(y => new RutaRequest
                {
                    IdLogRutaVendedor = 0,
                    IdVendedor        = y.IdVendedor,
                    Fecha             = y.Fecha,
                    Latitud           = y.Latitud,
                    Longitud          = y.Longitud,
                    ClienteRequest    = new ClienteRequest
                    {
                        IdCliente      = y.idCliente,
                        Nombre         = y.Cliente.Nombre,
                        RazonSocial    = y.Cliente.RazonSocial,
                        Apellido       = y.Cliente.Apellido,
                        Direccion      = y.Cliente.Direccion,
                        Identificacion = y.Cliente.Identificacion,
                        Foto           = y.Cliente.Foto,
                    }
                }).OrderBy(or => or.Fecha).ToListAsync();

                ListaRuta.AddRange(Lista2);
                ListaRuta.OrderBy(or => or.Fecha).ToList();
                // Visitas
                var listaVisitas = await db.Visita
                                   .Where(x => x.Fecha.Day == hoy.Day && x.Vendedor.IdVendedor == vendedorRequest.IdVendedor)
                                   .Select(c => new VisitaRecorrido
                {
                    ClienteRequest = new ClienteRequest
                    {
                        IdCliente      = c.idCliente,
                        Nombre         = c.Cliente.Nombre,
                        RazonSocial    = c.Cliente.RazonSocial,
                        Apellido       = c.Cliente.Apellido,
                        Direccion      = c.Cliente.Direccion,
                        Identificacion = c.Cliente.Identificacion,
                        Foto           = c.Cliente.Foto,
                    },
                    ListaCompromisos = c.Compromiso.Select(y => new CompromisosRecorrido {
                        Detalle        = y.Descripcion,
                        TipoCompromiso = y.TipoCompromiso.Descripcion,
                        Solucion       = y.Solucion
                    }).ToList(),
                    Fecha    = c.Fecha,
                    IdVisita = c.idVisita,
                }
                                           ).ToListAsync();


                listaVisitas.Count();

                RutaVisitas = new RutasVisitasRequest
                {
                    ListaRutas   = ListaRuta,
                    ListaVisitas = listaVisitas,
                };

                return(RutaVisitas);
            }
            catch (Exception ex)
            {
                return(RutaVisitas);
            }
        }
예제 #27
0
        public async Task <List <VendedorRequest> > BuscarUsuariosVendedoresPorEmpresaEIdentificacion(VendedorRequest vendedorRequest)
        {
            //Necesarios el IdEmpresa e Identificacion
            var listaVendedores = new List <VendedorRequest>();

            try
            {
                listaVendedores = await db.Vendedor.Select(x => new VendedorRequest
                {
                    IdVendedor        = x.IdVendedor,
                    TiempoSeguimiento = x.TiempoSeguimiento,
                    IdSupervisor      = x.IdSupervisor,
                    IdUsuario         = x.AspNetUsers.Id,
                    TokenContrasena   = x.AspNetUsers.TokenContrasena,
                    Foto           = x.AspNetUsers.Foto,
                    Estado         = x.AspNetUsers.Estado,
                    Correo         = x.AspNetUsers.Email,
                    Direccion      = x.AspNetUsers.Direccion,
                    Identificacion = x.AspNetUsers.Identificacion,
                    Nombres        = x.AspNetUsers.Nombres,
                    Apellidos      = x.AspNetUsers.Apellidos,
                    Telefono       = x.AspNetUsers.Telefono,
                    idEmpresa      = vendedorRequest.idEmpresa
                }
                                                           ).Where(x => x.idEmpresa == vendedorRequest.idEmpresa && x.Identificacion == vendedorRequest.Identificacion).ToListAsync();

                return(listaVendedores);
            }
            catch (Exception ex)
            {
                return(listaVendedores);
            }
        }
예제 #28
0
        public async Task <EstadisticoVendedorRequest> VerEstadisticosVendedor(VendedorRequest vendedorRequest)
        {
            EstadisticoVendedorRequest estadisticoVendedorRequest = new EstadisticoVendedorRequest();


            //Solo necesita el IdVendedor

            var promedio     = 0;
            var listaVisitas = new List <Visita>();

            try
            {
                // Lógica sacar promedio de calificaciones
                listaVisitas = await db.Visita.Where(y => y.IdVendedor == vendedorRequest.IdVendedor).ToListAsync();


                for (int i = 0; i < listaVisitas.Count; i++)
                {
                    promedio = promedio + Convert.ToInt32(listaVisitas.ElementAt(i).Calificacion);
                }

                promedio = promedio / listaVisitas.Count;



                // Lógica para estadísticos pasteles (tipo de compromiso)
                var listaCompromiso = await db.Compromiso
                                      .Join(db.TipoCompromiso, com => com.IdTipoCompromiso, tc => tc.IdTipoCompromiso, (com, tc) => new { tcom = com, ttc = tc })
                                      .Join(db.Visita, conjunto1 => conjunto1.tcom.idVisita, visita => visita.idVisita, (conjunto1, visita) => new { Aconjunto1 = conjunto1, Avis = visita })
                                      .Join(db.Vendedor, conjunto2 => conjunto2.Avis.IdVendedor, ven => ven.IdVendedor, (conjunto2, ven) => new { AConjunto2 = conjunto2, Aven = ven })

                                      .Where(y => y.Aven.IdVendedor == vendedorRequest.IdVendedor)
                                      .Select(x => new TipoCompromisoRequest
                {
                    IdTipoCompromiso = x.AConjunto2.Aconjunto1.ttc.IdTipoCompromiso,
                    Descripcion      = x.AConjunto2.Aconjunto1.ttc.Descripcion
                }

                                              ).GroupBy(z => z.Descripcion).ToListAsync();


                var listaTipoCompromisos = new List <TipoCompromisoRequest>();

                for (int i = 0; i < listaCompromiso.Count; i++)
                {
                    var num = listaCompromiso.ElementAt(i).Count();

                    listaTipoCompromisos.Add(
                        new TipoCompromisoRequest {
                        Descripcion        = listaCompromiso.ElementAt(i).ElementAt(0).Descripcion,
                        CantidadCompromiso = num
                    }
                        );
                }


                // Lógica para compromisos cumplidos - incumplidos

                var cumplidos = await db.Compromiso
                                .Join(db.Visita, com => com.idVisita, v => v.idVisita, (com, v) => new { tcom = com, tv = v })
                                .Join(db.Vendedor, conjunto => conjunto.tv.IdVendedor, ven => ven.IdVendedor, (conjunto, ven) => new { varConjunto = conjunto, tven = ven })
                                .Where(y => y.tven.IdVendedor == vendedorRequest.IdVendedor && !String.IsNullOrEmpty(y.varConjunto.tcom.Solucion))
                                .ToListAsync();

                var incumplidos = await db.Compromiso
                                  .Join(db.Visita, com => com.idVisita, v => v.idVisita, (com, v) => new { tcom = com, tv = v })
                                  .Join(db.Vendedor, conjunto => conjunto.tv.IdVendedor, ven => ven.IdVendedor, (conjunto, ven) => new { varConjunto = conjunto, tven = ven })
                                  .Where(y => y.tven.IdVendedor == vendedorRequest.IdVendedor && String.IsNullOrEmpty(y.varConjunto.tcom.Solucion))
                                  .ToListAsync();


                estadisticoVendedorRequest.IdVendedor             = vendedorRequest.IdVendedor;
                estadisticoVendedorRequest.CalificacionPromedio   = promedio;
                estadisticoVendedorRequest.ListaTipoCompromiso    = listaTipoCompromisos;
                estadisticoVendedorRequest.CompromisosCumplidos   = cumplidos.Count();
                estadisticoVendedorRequest.CompromisosIncumplidos = incumplidos.Count();

                return(estadisticoVendedorRequest);
            }
            catch (Exception ex)
            {
                return(estadisticoVendedorRequest);
            }
        }