public ActionResult CalificarProveedor(string nombreEvento = "") { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { EventoServicioContratadoViewModel vm = new EventoServicioContratadoViewModel(); using (GestionEventosContext db = new GestionEventosContext()) { string org = Session["OrganizadorLogueado"].ToString(); //cargo los eventos realizados asociados al Organizador autenticado vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Fecha < DateTime.Now).Where(p => p.Realizado).Where(p => p.Organizador.NombreOrganizador == org).ToList(); if (nombreEvento != "") {//cuando un evento es seleccionado en la vista se pasa el nombre del evento por parametro para cargar sus ServicioContratado ViewBag.NombreEvento = nombreEvento; vm.ServiciosContratados = db.ServicioContratados.Where(p => p.NombreEvento == nombreEvento).ToList(); } else { ViewBag.NombreEvento = null; } } return(View(vm)); } }
public bool ValidarUsuario(string nombre, string pass) { bool retorno = false; using (GestionEventosContext db = new GestionEventosContext()) { //busco el usuario con el nombre ingresado en la bd Usuario tmpUsuario = db.Usuarios.Find(nombre); if (tmpUsuario != null) { //recupero la sal del usuario guardado string sal = tmpUsuario.Sal; //genero una password con la contraseña ingresada por parametro y la sal del usuario guardado en la base y compruebo con la password del usuario if (Usuario.GenerarSHA256Hash(pass, sal) == tmpUsuario.Pass) { //guardo el rol del Usuario autenticado Session["TipoDeUsuario"] = tmpUsuario.Rol.ToString(); retorno = true; if (nombre.Contains("@")) //si el nombre contiene @ quiere decir que es un usuario con rol de Organizador { Organizador org = db.Organizadores.Where(p => p.Usuario.Nombre == nombre).First(); Session["OrganizadorLogueado"] = org.NombreOrganizador.ToString(); } } } } return(retorno); }
public ActionResult ListarEventosDeOrganizador(string nombreEvento = "", string nombreOrganizador = "") { if (!this.esOrganizador() && !this.esAdmin()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } EventoServicioContratadoViewModel vm = null; if (this.esOrganizador())//si el rol del usuario autenticado es Organizador { vm = new EventoServicioContratadoViewModel(); using (GestionEventosContext db = new GestionEventosContext()) { string org = Session["OrganizadorLogueado"].ToString(); //cargo los eventos asociados al Organizador autenticado vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Organizador.NombreOrganizador == org).ToList(); if (nombreEvento != "") {//cuando un evento es seleccionado en la vista se pasa el nombre del evento por parametro para cargar sus ServicioContratado ViewBag.NombreEvento = nombreEvento; vm.ServiciosContratados = db.ServicioContratados.Where(p => p.NombreEvento == nombreEvento).ToList(); } else { ViewBag.NombreEvento = null; } } } if (this.esAdmin())//si el rol del usuario autenticado es Administrador { vm = new EventoServicioContratadoViewModel(); using (GestionEventosContext db = new GestionEventosContext()) { //cargo la lista de Organizadores vm.Organizadores = db.Organizadores.ToList(); if (nombreOrganizador != "") {//al seleccionar un Organizador en la vista se pasa su nombre por parametro para cargar los eventos asociados al Organizador ViewBag.NombreOrganizador = nombreOrganizador; vm.Eventos = db.Eventos.Where(p => p.Organizador.NombreOrganizador == nombreOrganizador).ToList(); } else { ViewBag.NombreOrganizador = null; } if (nombreEvento != "") {//cuando un evento es seleccionado en la vista se pasa el nombre del evento por parametro para cargar sus ServicioContratado ViewBag.NombreEvento = nombreEvento; vm.ServiciosContratados = db.ServicioContratados.Where(p => p.NombreEvento == nombreEvento).ToList(); } else { ViewBag.NombreEvento = null; } } } return(View(vm)); }
public ActionResult ListadoMasElegidos() { List <Proveedor> listaProveedores = new List <Proveedor>(); GestionEventosContext db = new GestionEventosContext(); listaProveedores = db.Proveedores.GroupBy(p => p.CantVecesElegido) .OrderByDescending(grupo => grupo.Key) .First().ToList(); return(View(listaProveedores)); }
public ActionResult CrearEvento(CrearEventoViewModel vm) { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { if (vm.Fecha < DateTime.Now) { ModelState.AddModelError("", "La fecha debe ser mayor a la actual."); } if (vm.Evento.Nombre == null || vm.Evento.Nombre == "") { ModelState.AddModelError("", "Debe ingresar un Nombre para el evento."); } if (ModelState.IsValid) { using (GestionEventosContext db = new GestionEventosContext()) { Evento auxEv = db.Eventos.Find(vm.Evento.Nombre); if (auxEv != null) { ModelState.AddModelError("", "Ya existe un Evento con ese nombre."); } else { var fechaYDireccion = db.Eventos.Where(p => p.Direccion == vm.Evento.Direccion) .Where(p => p.Fecha == vm.Fecha).FirstOrDefault(); if (fechaYDireccion != null) { ModelState.AddModelError("", "Ya existe un Evento en esa fecha y direccion"); } else { TipoEvento tipoEv = db.TipoEventos.Find(vm.IdTipoEvento); db.Entry(tipoEv).Collection(p => p.TiposServicios).Load(); vm.Evento.TipoEvento = tipoEv; Session["CrearEventoVM"] = vm; return(RedirectToAction("SeleccionarProveedoresEvento")); } } } } else { vm = (CrearEventoViewModel)TempData["Evento"]; TempData["Evento"] = vm; } return(View(vm)); } }
public ActionResult Editar(Organizador org) { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { //Defino variales auxiliares para el retorno var parametroDeAccion = (Object)null; string accion = string.Empty; if (org != null) { string nuevoTelefono = org.Telefono; org = (Organizador)TempData["Organizador"]; if (nuevoTelefono == null || nuevoTelefono == "") { TempData["Organizador"] = org; return(View(org)); } else { if (!stringEsSoloNumeros(nuevoTelefono)) { ModelState.AddModelError("", "Por favor ingrese un telefono valido"); TempData["Organizador"] = org; return(View(org)); } } using (GestionEventosContext db = new GestionEventosContext()) { Organizador auxOrg = db.Organizadores.Find(Session["OrganizadorLogueado"].ToString()); if (auxOrg != null) { //asigno el nuevo telefono al Organizador auxOrg.Telefono = nuevoTelefono; db.SaveChanges(); accion = "Datos"; TempData["Organizador"] = auxOrg; } else { accion = "Error"; parametroDeAccion = new { mensaje = "" }; } } } return(RedirectToAction(accion, parametroDeAccion)); } }
public ActionResult ListadoMejorCalificados() { List <Proveedor> listaProveedores = new List <Proveedor>(); GestionEventosContext db = new GestionEventosContext(); listaProveedores = db.Proveedores.GroupBy(p => p.CalificacionGeneral) .OrderByDescending(grupo => grupo.Key) .First().ToList(); return(View(listaProveedores)); }
public ActionResult Crear(Organizador org) { //Defino variables auxiliares para el retorno var parametroDeAccion = (Object)null; string accion = string.Empty; if (org.Telefono != null) { if (!stringEsSoloNumeros(org.Telefono)) { ModelState.AddModelError("", "Debe ingresar un telefono valido"); } } if (ModelState.IsValid) { using (GestionEventosContext db = new GestionEventosContext()) { if (db.Organizadores.Find(org.NombreOrganizador) == null) { if (db.Usuarios.Find(org.Email) == null) { //Creo el Usuario Usuario tmpUser = new Usuario(org.Email, org.Usuario.Pass, Usuario.EnumRol.Organizador); //Asigno el Usuario creado al Organizador org.Usuario = tmpUser; db.Organizadores.Add(org); //Guardo el Organizador en la base db.SaveChanges(); accion = "Datos"; parametroDeAccion = new { nombre = org.NombreOrganizador }; TempData["Organizador"] = org; } else { accion = "Error"; parametroDeAccion = new { mensaje = "Ya existe un Usuario con el Email ingresado" }; } } else { accion = "Error"; parametroDeAccion = new { mensaje = "Ya existe un Organizador con el Nombre ingresado" }; } } } else { return(View()); } //El destino de la redireccion depende del resultado de la operacion return(RedirectToAction(accion, parametroDeAccion)); }
public ActionResult EventosEntreFechas(DateTime?fechaInicial = null, DateTime?fechaFinal = null) { if (!this.esAdmin()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { //Si la fecha inicial es mayor a la final devuelvo un error if (fechaInicial > fechaFinal) { ModelState.AddModelError("", "La fecha incial debe ser menor a la fecha final."); } EventoServicioContratadoViewModel vm = new EventoServicioContratadoViewModel(); using (GestionEventosContext db = new GestionEventosContext()) { if (ModelState.IsValid) { bool evaluarOtrosCasos = true; if (fechaInicial != null & fechaFinal != null) //si las dos fechas fueron ingresadas { evaluarOtrosCasos = false; //no evaluo los demas casos vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Fecha >= fechaInicial).Where(p => p.Fecha <= fechaFinal).ToList(); } if (evaluarOtrosCasos)//compruebo si fue ingresada alguna de las fechas o ninguna { if (fechaInicial != null) { vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Fecha >= fechaInicial).ToList(); } if (fechaFinal != null) { vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").Where(p => p.Fecha <= fechaFinal).ToList(); } if (fechaFinal == null && fechaInicial == null) { vm.Eventos = db.Eventos.Include("Organizador").Include("TipoEvento").ToList(); } } } } return(View(vm)); } }
public ActionResult Listar() { if (!this.esAdmin()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { var lista = new List <Organizador>(); using (GestionEventosContext db = new GestionEventosContext()) { lista = db.Organizadores.ToList(); } return(View(lista)); } }
public ActionResult CrearEvento() { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { CrearEventoViewModel vm = null; using (GestionEventosContext db = new GestionEventosContext()) { vm = new CrearEventoViewModel(db.TipoEventos.ToList()); } TempData["Evento"] = vm; return(View(vm)); } }
public ActionResult Editar() { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { Organizador org = null; using (GestionEventosContext db = new GestionEventosContext()) { org = db.Organizadores.Find(Session["OrganizadorLogueado"].ToString()); db.Entry(org).Reference(p => p.Usuario).Load(); TempData["Organizador"] = org; } return(View(org)); } }
public ActionResult SeleccionarProveedoresEvento() { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { CrearEventoViewModel vm = (CrearEventoViewModel)Session["CrearEventoVM"]; using (GestionEventosContext db = new GestionEventosContext()) { Organizador orgLogueado = db.Organizadores.Find(Session["OrganizadorLogueado"].ToString()); if (orgLogueado != null) { Evento tmpEvento = new Evento() { Nombre = vm.Evento.Nombre, Fecha = vm.Fecha, Direccion = vm.Evento.Direccion, TipoEvento = vm.Evento.TipoEvento, Realizado = false, Organizador = orgLogueado, ServiciosContratados = new List <ServicioContratado>() }; List <TipoServicio> listaTipoServ = tmpEvento.TipoEvento.TiposServicios; vm.TipoServicios = new SelectList(listaTipoServ, "NombreTipoServicio", "NombreTipoServicio"); vm.TipoEventos = new SelectList(db.TipoEventos.ToList(), "NombreTipoEvento", "NombreTipoEvento"); } } return(View(vm)); } }
public ActionResult CargarServiciosAEvento(CrearEventoViewModel vm = null, string rut = "", string nombreServicio = "") { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { CrearEventoViewModel auxVm = (CrearEventoViewModel)Session["CrearEventoVM"]; if (nombreServicio != "") { if (auxVm.Evento.ServiciosContratados != null) { bool mostrarError = auxVm.Evento.ServiciosContratados.Any(p => p.NombreServicio == nombreServicio && p.Rut == rut); if (mostrarError) { ModelState.AddModelError("", "El servicio seleccionado ya existe en la lista de servicios contratados del evento"); } } if (ModelState.IsValid) { using (GestionEventosContext db = new GestionEventosContext()) { Servicio tmpServicio = db.Servicios.Find(rut, nombreServicio); if (tmpServicio != null) { ServicioContratado tmpServicioContratado = new ServicioContratado() { Fecha = auxVm.Fecha, Rut = rut, NombreServicio = nombreServicio, NombreEvento = auxVm.Evento.Nombre, yaCalificado = false, Servicio = tmpServicio }; auxVm.Evento.ServiciosContratados.Add(tmpServicioContratado); foreach (Proveedor auxProv in auxVm.Proveedores) { if (auxProv.Rut == rut) { auxProv.ServiciosOfrecidos.RemoveAll(x => x.NombreServicio == nombreServicio); } } Session["CrearEventoVM"] = auxVm; } } }// } else { if (rut != "") { ViewBag.Rut = rut; foreach (Proveedor tmpProv in auxVm.Proveedores) { if (tmpProv.Rut == rut) { auxVm.ProveedorElegido = tmpProv; Session["CrearEventoVM"] = auxVm; } } } } return(View(auxVm)); } }
public ActionResult SeleccionarProveedoresEvento(CrearEventoViewModel vm = null, string rut = "") { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { CrearEventoViewModel auxVm = (CrearEventoViewModel)Session["CrearEventoVM"]; if (vm != null) { auxVm.IdTipoServicio = vm.IdTipoServicio; Session["CrearEventoVM"] = auxVm; } if (rut != "") { foreach (Proveedor tmpProv in auxVm.Proveedores) { if (tmpProv.Rut == rut) { auxVm.ProveedorElegido = tmpProv; Session["CrearEventoVM"] = auxVm; } } } else { if (auxVm.IdTipoServicio != null) { using (GestionEventosContext db = new GestionEventosContext()) { List <Servicio> listaServicios = db.Servicios.Where(p => p.TipoServicio.NombreTipoServicio == auxVm.IdTipoServicio).ToList(); List <Proveedor> listaProveedores = db.Proveedores.Include("Calificaciones").ToList(); List <Proveedor> listaProvAMostrar = new List <Proveedor>(); foreach (Proveedor auxProveedor in listaProveedores) { auxProveedor.ServiciosOfrecidos.Clear();//limpio la lista de servicios del proveedor para no mostrar servicios no adecuados bool aMostrar = false; foreach (Servicio auxServicio in listaServicios) { if (auxServicio.Rut == auxProveedor.Rut) { auxProveedor.ServiciosOfrecidos.Add(auxServicio); aMostrar = true; } } if (aMostrar) { listaProvAMostrar.Add(auxProveedor); } } auxVm.Proveedores = listaProvAMostrar.OrderByDescending(p => p.Vip) .ThenByDescending(p => p.NomFantasia).ToList(); auxVm.ServiciosProveedores = listaServicios; Session["CrearEventoVM"] = auxVm; } } } return(View(auxVm)); } }
public ActionResult CargarServiciosAEvento() { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { CrearEventoViewModel auxVm = (CrearEventoViewModel)Session["CrearEventoVM"]; using (GestionEventosContext db = new GestionEventosContext()) { Organizador org = db.Organizadores.Find(Session["OrganizadorLogueado"].ToString()); List <ServicioContratado> ContratadosParaElEvento = new List <ServicioContratado>(); if (auxVm.Evento.ServiciosContratados != null && auxVm.Evento.ServiciosContratados.Count > 0) { foreach (ServicioContratado tmpServCont in auxVm.Evento.ServiciosContratados) { Servicio auxSer = db.Servicios.Find(tmpServCont.Rut, tmpServCont.NombreServicio); ServicioContratado nuevoContratado = new ServicioContratado() { Fecha = auxVm.Fecha, Rut = tmpServCont.Rut, NombreServicio = tmpServCont.NombreServicio, NombreEvento = auxVm.Evento.Nombre, Servicio = auxSer, yaCalificado = false }; ContratadosParaElEvento.Add(nuevoContratado); } } else { return(RedirectToAction("Error", new { mensaje = "Debe seleccionar al menos un Servicio para poder dar de alta un Evento." })); } TipoEvento tipoEventoElegido = db.TipoEventos.Find(auxVm.IdTipoEvento); Evento nuevoEvento = new Evento() { Nombre = auxVm.Evento.Nombre, Fecha = auxVm.Fecha, Direccion = auxVm.Evento.Direccion, Organizador = org, TipoEvento = tipoEventoElegido, Realizado = false, ServiciosContratados = ContratadosParaElEvento }; db.Eventos.Add(nuevoEvento); try { db.SaveChanges(); return(RedirectToAction("Exito", new { mensaje = "Su evento fue creado exitosamente!" })); } catch { return(RedirectToAction("Error", new { mensaje = "Hubo un problema al agregar el registro en la Base de Datos" })); } } } }
public ActionResult CrearCalificacion(CrearCalificacionViewModel vm) { if (!this.esOrganizador()) { return(RedirectToAction("Logout", "Home", new { mensaje = @"Usted no tiene los permisos necesarios para utilizar el recurso. Por favor inicie sesión con las credenciales adecuadas" })); } else { var parametroDeAccion = (Object)null; string accion = string.Empty; //Recupero el objeto creado anteriormente con los datos ingresados por parametro CrearCalificacionViewModel aux = (CrearCalificacionViewModel)Session["CrearCalificacion"]; //cargo la calificacion y el comentario en el objeto aux.CalificacionProveedor.Calificacion = vm.CalificacionProveedor.Calificacion; aux.CalificacionProveedor.Comentario = vm.CalificacionProveedor.Comentario; vm = aux; //Valido que la fecha de contratacion del servicio a calificar no sea mayor a la actual if (vm.ServicioContratado.Fecha > DateTime.Now) { ModelState.AddModelError("", "Este evento aun no ha sido realizado(fecha de evento mayor a la actual)"); } if (ModelState.IsValid) { using (GestionEventosContext db = new GestionEventosContext()) { //busco al proveedor para agregarle el comentario Proveedor tmpProv = db.Proveedores.Find(vm.CalificacionProveedor.Rut); if (tmpProv != null) { if (vm.CalificacionProveedor.Comentario == null || vm.CalificacionProveedor.Comentario == "") { vm.CalificacionProveedor.Comentario = "No fue ingresado un comentario adicional"; } tmpProv.Calificaciones.Add(vm.CalificacionProveedor); //busco el ServicioContratado con los datos del evento y proveedor ServicioContratado auxServContratado = db.ServicioContratados.Find(vm.ServicioContratado.Fecha, tmpProv.Rut, vm.ServicioContratado.NombreServicio, vm.CalificacionProveedor.NombreEvento); //indico que ya fue calificado para no tomarlo en cuenta en futuras calificaciones auxServContratado.yaCalificado = true; //Compruebo que el proveedor no haya sido calificado previamente para el evento var proveedorYaCalificado = db.ServicioContratados.Where(p => p.Rut == tmpProv.Rut).Where(p => p.NombreEvento == vm.CalificacionProveedor.NombreEvento).Where(p => p.yaCalificado).FirstOrDefault(); if (proveedorYaCalificado == null) { try { db.SaveChanges(); accion = "Exito"; parametroDeAccion = new { mensaje = "Su comentario fue ingresado con exito! Muchas gracias" }; } catch { accion = "Error"; parametroDeAccion = new { mensaje = "Su comentario no pudo ser ingresado. Por favor verifique los datos ingresados e intentelo nuevamente." }; } } else { db.Dispose(); using (GestionEventosContext dbNuevo = new GestionEventosContext()) { ServicioContratado auxServContratadoTmp = dbNuevo.ServicioContratados.Find(vm.ServicioContratado.Fecha, tmpProv.Rut, vm.ServicioContratado.NombreServicio, vm.CalificacionProveedor.NombreEvento); //indico que ya fue calificado para no tomarlo en cuenta en futuras calificaciones auxServContratadoTmp.yaCalificado = true; try { dbNuevo.SaveChanges(); accion = "Exito"; parametroDeAccion = new { mensaje = "Su calificacion no fue ingresada debido a que el Proveedor seleccionado fue previamente calificado. Muchas gracias!" }; } catch { accion = "Error"; parametroDeAccion = new { mensaje = "Su comentario no pudo ser ingresado. Por favor verifique los datos ingresados e intentelo nuevamente." }; } } } } else { accion = "Error"; parametroDeAccion = new { mensaje = "Por favor verifique los datos ingresados e intentelo nuevamente." }; } } } else { accion = "Error"; string mensaje = "Por favor verifique los datos ingresados e intentelo nuevamente."; //VALIDACION DESACTIVADA PARA PODER TESTEAR CORRECTAMENTE LA APLICACION //if (!ModelState.IsValid) mensaje = "Este evento aun no ha sido realizado(fecha de evento mayor a la actual)"; parametroDeAccion = new { mensaje = mensaje }; } //segun el resultado de las operaciones puede variar a que accion se redirecciona return(RedirectToAction(accion, parametroDeAccion)); } }