Coder Social home page Coder Social logo

cadena-favores's Introduction

Cadena de Favores

Instalación

  • Ejecutar el comando $ git clone https://github.com/shk33/cadena-favores.git

  • Moverse a la carpeta del proyecto cd cadena-favores.

  • Ejecutar el comando bundle install.

  • Abrir el archivo config/application.example.yml. DATABASE_NAME: "cadena_favores" DATABASE_USERNAME: "postgres" DATABASE_PASSWORD: "password" DATABASE_HOST: "127.0.0.1"

  • Modifcar los valores DATABASE_USERNAME y DATABASE_PASSWORD con la configuración de su computadora de Postgress.

  • Duplicar el archivo config/application.example.yml y al archivo duplicado renombrarlo config/application.yml

  • Ejecutar el comando rake db:setup

  • Ejecutar el comando rails server.

  • Visitar la página en locahost:3000

cadena-favores's People

Contributors

shk33 avatar anuarml avatar jahzeelcoss avatar pegnacorp avatar

Watchers

James Cloos avatar  avatar  avatar  avatar  avatar  avatar Amir Gonzalez avatar

cadena-favores's Issues

Reparar Tags

La relación polimórifica de los Tags no es la correcta, removerla y reparar sus relaciones con sevice_requests y el perfil de usuario

Completado en 2 horas.

SOL-02 Editar solicitud de servicio

Completado en 5 horas

Depende del Requisito #3

Controlador que se debe utilizar: ServiceRequetsController
Ruta que debes agregar: resources :service_requests
Acciones del controlador que se deben implementar:

  • Edit
  • Update

Consideraciones de Seguridad

  • La Solicitud de servicio sólo puede ser editado por el dueño de la solicitud, redirigir a root_url si no es el dueño de la soliciutd
  • El problema principal de actualizar es el número de monedas congeladas debes hacer esto
    • Antes de actualizar agarras el número de puntos que costaba el servicio antes
    • Quitas ese número de puntos de frozen_points y lo mueves a usable_points (user.balance.frozen_points)
    • Verifica ahora si el usuario tiene suficientes puntos para pedir ese servicio
    • En caso de que sí tenga suficientes puntos tomas el nuevo costo del servicio y lo restas de usable_points y agregas esos puntos a frozen_points
    • Crear una clase llamada ServiceRequestUpdate y Basarse mucho en la clase ServiceRequestCreation y en cómo el Service_request controller en la acción de create usa a la clase ServiceRequestCreation
  • Para mostrar el formulario sólo debes agregar esto a tu vista <%= render 'form' %>
  • Si la actualización fue exitosa rediriges al show de service request, algo así lucurá el código
    • redirect_to @service_request

SOL-06 Ver solicitudes de servicio

Completado en 1 hora
Vista sugerida: http://chanchandrue.net/themes/srikandi/v2/store.html

Controlador que se utilizarr: ServiceRequetsController
Ruta que debes agregar: resources :service_requests
Acciones del controlador que se deben implementar:

  • index

Cambios

SOL-03 Eliminar solicitudes de servicio

Completado: 2 horas
Vista sugerida: En la vista implementada en #6 Agregar el botón de eliminar para cada solicitud de servicio
Controlador que se debe crear: ServiceRequetsController
Ruta que debes agregar: resources :service_requests
Acciones del controlador que se deben implementar:

  • destroy

Cambios

  • El service Request sólo puede ser eliminado por su dueño, verificar eso en el controlador
    Algo así luciría
    if current_user == service_request.user entonces lo borras
    else rediriges a root_url
  • Verificar que se elimine el service del cual depende el ServiceRequest

SOL-01 Busqueda de solicitudes de servicio

Corregido en 3 horas
Vista sugerida: http://chanchandrue.net/themes/srikandi/v2/form-component.html (Usar esos formualarios de preferencia)
y esta vista para listar los resultados de la busqueda:
http://chanchandrue.net/themes/srikandi/v2/store.html

Controlador que se debe utilizar: ServiceRequetsController
Ruta que debes agregar: resources :service_requests (Si Camacho te dice que debes agregar otra ruta lo haces)
Acciones del controlador que se deben implementar:

  • index con search (Preguntar a Camacho cómo se hace)

Cambios

  • Los usuarios ya tiene seguidores así que puedes hacer algún algoritmo sencillo que de preferencia a esos seguidores, además las Solicitudes de Servicios ya tienen tags.

Modificar el formulario de Aceptar Oferta

Ya que ahora hay una relación directa entre el service_arrangement y el offer.
Ya puedes aceptar nested_attributes para crear el service_arrangement correctamente.

Además ahora ya es posible quitarle por completo al service_arrangement el service, así remuevo por completo la duplicación de información que existe en el sistema.

PER-02 Editar tipos de servicio (Tags del usuario)

Completado: 3 horas

  • Vista sugerida: http://chanchandrue.net/themes/srikandi/v2/form-component.html (Usar esos formualarios de preferencia) La idea es crear checkboxes y palomeas las habilidades que tienes
  • Ruta: resources :user
  • Acciones del controlador que se deben implementar:
    • edit
    • update
  • Nota: Sí tanto editar tipos de servicio y editar perfil usan la misma vista y las mismas acciones del controlador

Usa la tabla pivote profiles_tags, porque este requisito requiere una relación many-to-may

GUF-02 Agregar usuario a suarios favoritos

Cuando entras al perfil de un usuario con una url así
app/users/6
En esa vista ya te muestra un botón que dice "Agregar a Favoritos" cambias ese botón que ahora diga "Seguir" y ese botón envia una petición POST a relationship controller

en el controlador debe lucir algo así

def create
follower = User.find params[:user_id]
following = User.find params[:other_user_id]
@relationship = follower.follow following
redirect_to following
end

Antes de mandarn a redireccionar debes mandar la notificación, agregar estas dos líneas
@relationship.create_activity action: 'new', recipient: following, owner: follower
send_notification following.id, 'new_relationship'

GSR-01 Aceptar realizar un servicio por parte del dueño de la solicitud

Lógica de negocios:
El dueño de la solicitud de servicio (lo llamaré el Cliente) ve todas las ofertas que existen en la solicitud de servicio. Estas ofertas se muestras en la acción show del service request controller, en esa vista tienes que agregar un botón que diga "Aceptar Oferta" o lo que tu considerés, este botón sólo lo puede ver el dueño de la solicitud del servicio. El botón "aceptar" manda al service_arrangement_controller en la acción de new. (Está vista sólo puede ser accedida por el cliente).
En esta vista muestras la persona que seleccionó como servidor, así también puedes agregar la fecha de inicio y la fecha de término de la solicitud de servicio y en un campo oculto poner el id del service_request, todos estos campos son obligatorios por último la vista tiene un botón que dice "Crear Acuerdo", este será el botón submit que hará una petición POST hacia el service_arrangement_controller.rb en la acción create, sólo el dueño puede hacer peticiones POST a esa acción en caso de que se detecte que no sea el dueño, vas a redirigir a root_ur.
En caso de que la petición POST no tenga todos los campos rebotas y renderizas :new. En caso de que la petición sea correcta entonces creas un nuevo service_arrangement con los 5 campos obligatorios (server_id, client_id, start_date, end_date, service_request_id).
Cuando se cree exitósamente un service arrengement, el service requests debes cambiarlo a estado closed. Cuando todo sea exitoso ahora rediriges a service_arrangement show (sí tambíen debes crear esta vista)

Hay un pequeño gran problema en diseño, que no voy a corregir, así que en algún lugar de tu código tendrás que haces esto.

def create
service_request = ServiceRequest.find params[:service_request_id]
arrengement = ServiceArrangement.new service_arrangement_params
arrengement.service = service_request.service.dup //Aquí esta la magia que es por falla del diseño
end

Y por si fuera poco además debes enviar la notificación del usuario cuando el service_arrangement se haya creado correctamente, debes agregar estas dos líneas (muy probablemente las tengas que modificar) antes de que el controlador create redirecciones
@service_arrangement.create_activity action: 'accepted_offer', recipient: server, owner: current_user
send_notification server.id, 'accepted_offer'
Esas dos crean la notificación y la envian

Tienes que programar esto usando Single Responsability (Checar la carpeta service_request en el modelo ) si no lo haces, te vas a super pelear con Rails.

Validaciones del Modelo
Cuando crees un nuevo service_arrangement debes validar
que sí tenga un server, un client, un start_date, un end_date y un service.

AQUI NO SUCEDIO NADA XDD

NOT-05 Ver Notificaciones

  • Mejorar los estilos de las notificaciones
  • Alinea el fontawesome
  • Hacer que cargue las notificaciones cada vez que mueva la página
    (Siempre se tiene que hacer conforme todos los benditos requisitos se hagan)
    Tiempo por el momento: 2horas
    Notes: Cant be fully implemented yet, it need the service_arrangement_path, offer_path , points_transaction_path, message_path, relationship_path

3 horas

GUF-03 Eliminar usuario de usuarios favorito

Cuando entras al perfil de un usuario con una url así
app/users/6
En esa vista si ya sigues al usuario, debe mostrar ahora un botón que dice "Unfollow", ese botón envia una petición DELETE a relationship controller al acción destroy

en el controlador debe lucir algo así

def destroy
follower = User.find params[:user_id]
following = User.find params[:other_user_id]
follower.unfollow following
redirect_to following
end

Implementar Ofertas

En los requisitos no se específico pero es necesario y es parte de esta iteración.

GSR-06 Ver servicios a realizar

Muestra una lista de los servicios a realizar, los servicos a realizar son los service_arrangement con el boolen completed en false. Debe ser la acción index del service_arrangement.
Paginación de 5 en 5

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.