コード例 #1
0
 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));
     }
 }
コード例 #2
0
        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));
            }
        }