public ActionResult CrearCalificacion(string rut, string nombreEvento, DateTime fecha, 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 { ViewBag.Rut = rut; ViewBag.NombreServicio = nombreServicio; ViewBag.NombreEvento = nombreEvento; //con los datos ingresados por parametro, creo los objetos necesarios para dar de alta una calificacion CalificacionProveedor calificacionProveedor = new CalificacionProveedor() { Rut = rut, NombreEvento = nombreEvento }; ServicioContratado servicioContratado = new ServicioContratado() { Rut = rut, NombreEvento = nombreEvento, NombreServicio = nombreServicio, Fecha = fecha }; CrearCalificacionViewModel vm = new CrearCalificacionViewModel(); vm.CalificacionProveedor = calificacionProveedor; vm.ServicioContratado = servicioContratado; Session["CrearCalificacion"] = vm; return(View(vm)); } }
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)); } }