Example #1
0
        public bool ValorarNecesidad(int idNecesidad, int idUsuario, bool valoracion)
        {
            var valoracionNecesidad = new NecesidadesValoraciones
            {
                IdUsuario   = idUsuario,
                IdNecesidad = idNecesidad,
                Valoracion  = valoracion
            };

            _unitOfWork.NecesidadesValoraciones.Add(valoracionNecesidad);
            _unitOfWork.SaveChanges();

            var cantidadMeGusta   = _unitOfWork.NecesidadesValoraciones.Get(x => x.IdNecesidad == idNecesidad && x.Valoracion).Count();
            var cantidadNoMeGusta = _unitOfWork.NecesidadesValoraciones.Get(x => x.IdNecesidad == idNecesidad && !x.Valoracion).Count();
            var votosTotales      = cantidadMeGusta + cantidadNoMeGusta;

            var nuevaValoracion = votosTotales == 0 ? 0 : (cantidadMeGusta / votosTotales) * 100;

            var necesidad = _unitOfWork.Necesidades.Get(idNecesidad);

            necesidad.Valoracion = nuevaValoracion;

            _unitOfWork.SaveChanges();

            return(true);
        }
        public bool guardarValoracion(int idUsuario, int idNecesidad, string botonRecibido)
        {
            UsuarioDao               usuarioDao               = new UsuarioDao();
            NecesidadesDAO           necesidadesDAO           = new NecesidadesDAO();
            NecesidadValoracionesDao necesidadValoracionesDao = new NecesidadValoracionesDao();

            //Obtengo Usuario y Necesidad
            Usuarios    usuarioObtenido   = usuarioDao.ObtenerPorID(idUsuario);
            Necesidades necesidadObtenida = necesidadesDAO.ObtenerPorID(idNecesidad);

            //Valido si es que antes le dio Like or Dislike
            NecesidadesValoraciones necesidadRegistrada = necesidadValoracionesDao.obtenerNecesidadValoracionPor_IDUsuario_e_IdNecesidad(idUsuario, idNecesidad);

            if (necesidadRegistrada != null)
            {
                NecesidadesValoraciones valoracionObtenidaBD = new NecesidadesValoraciones();
                if (botonRecibido == "Like")
                {
                    if (necesidadRegistrada.IdNecesidad == idNecesidad)
                    {
                        if (necesidadRegistrada.Valoracion == "Like") //Si el estado en la BD tenia su MG, se lo remueve para que no quede el boton seleccionado
                        {
                            necesidadRegistrada.Valoracion = "Undefined";
                            valoracionObtenidaBD           = necesidadValoracionesDao.Actualizar(necesidadRegistrada);

                            if (valoracionObtenidaBD == null)
                            {
                                return(false);
                            }
                        }
                        else if (necesidadRegistrada.Valoracion != "Like") //Si el estado en la BD tenia su MG removido, se lo vuelve a poner en MG, para que quede el boton seleccionado
                        {
                            necesidadRegistrada.Valoracion = "Like";
                            valoracionObtenidaBD           = necesidadValoracionesDao.Actualizar(necesidadRegistrada);

                            if (valoracionObtenidaBD == null)
                            {
                                return(false);
                            }
                        }
                    }
                }
                else if (botonRecibido == "Dislike")
                {
                    if (necesidadRegistrada.IdNecesidad == idNecesidad)
                    {
                        if (necesidadRegistrada.Valoracion == "Dislike") //Si el estado en la BD tenia su Dislike, se lo remueve para que no quede el boton seleccionado
                        {
                            necesidadRegistrada.Valoracion = "Undefined";
                            valoracionObtenidaBD           = necesidadValoracionesDao.Actualizar(necesidadRegistrada);

                            if (valoracionObtenidaBD == null)
                            {
                                return(false);
                            }
                        }
                        else if (necesidadRegistrada.Valoracion != "Dislike") //Si el estado en la BD tenia su MG removido, se lo vuelve a poner en MG, para que quede el boton seleccionado
                        {
                            necesidadRegistrada.Valoracion = "Dislike";
                            valoracionObtenidaBD           = necesidadValoracionesDao.Actualizar(necesidadRegistrada);

                            if (valoracionObtenidaBD == null)
                            {
                                return(false);
                            }
                        }
                    }
                }
            }
            else //Es decir, nunca le habia dado MG a esa publicacion
            {
                //Asigno datos al objeto Necesidad Valoraciones
                NecesidadesValoraciones necesidadesValoraciones = new NecesidadesValoraciones();
                necesidadesValoraciones.IdUsuario   = usuarioObtenido.IdUsuario;
                necesidadesValoraciones.IdNecesidad = necesidadObtenida.IdNecesidad;
                // necesidadesValoraciones.Usuarios = usuarioObtenido;
                //necesidadesValoraciones.Necesidades = necesidadObtenida;
                necesidadesValoraciones.Valoracion = (botonRecibido == "Like") ? "Like" : (botonRecibido == "Dislike") ? "Dislike" : null;


                NecesidadesValoraciones valoracionObtenida = necesidadValoracionesDao.Crear(necesidadesValoraciones);



                //  NecesidadesValoraciones valoracionObtenida = necesidadValoracionesDao.Crear(usuarioObtenido, necesidadObtenida);

                if (valoracionObtenida == null)
                {
                    return(false);
                }
            }
            ServicioNecesidad servicioNecesidad = new ServicioNecesidad();

            Necesidades necesidadValorada = servicioNecesidad.calcularValoracion(necesidadObtenida);

            if (necesidadValorada == null)
            {
                return(false);
            }
            return(true);
        }