Git Product home page Git Product logo

android-cinehub's Introduction

Android-CineHub

Video

sample.mp4

android-cinehub's People

Contributors

jkutkut avatar alexaib2002 avatar aleexgheorghe avatar

android-cinehub's Issues

Sign up activity

Self explanatory. New users should enter their auth data before they can start accessing the app.

Database enhancements

All small - non breaking features or changes to the database can be listed here. They will be implemented in the future.

Seat selection

About

This activity should prompt the user which seat they want to choose.
The "Screen" TextView should be treated as a placeholder, and it could be replaced with an ImageView on future versions. If we keep this TextView, it should use the secondary color of the app's theme.

Ongoing data

  • Encoded room layout (bidimentional character array with characters encoding which seats are currently occupied)
  • Room id (required for formatting the name of the room)

Outgoing data

  • Selected seat position (row, col)
  • Room id (required so we know at which room the seat will be booked)

Entry activity

  • Users will always enter from #14

Exit activity

  • Users will always exit at #11

Draft

image

Home Activity

Simple activity, will provide an overview of the user's data:

  • TextView for displaying the number of reservations made by the user
  • Scroll filled by fragments showing the tickets booked by the user

This activity will appear after #12 and #11

Database model

Hi guys!

I open this issue in order to discuss among all the members of the team about the database data and the structure of this same, so we can save time!

Functionalities:

  1. Authentication system
    1. Login: mail, password
    2. Registration: first name, mail, password
  2. Display of movies
    1. Name of the movie
    2. Short description
    3. Date and time of the movie
    4. Room of the movie
    5. Banner of the movie
    6. Price of the movie

We must take into account if the movie room is available, the number of reservations of the room should not exceed the maximum number of seats available in the room.

The movies can contain a unique ID, this way we can synchronize it with the banner. What do you think?

Open debate!

DB API

The API to interact directly with Firebase using Android Studio Java.

Login activity

Users should be able to authenticate against the database before making any operation. This activity should take care of that.

Choose name for the app

Here are some suggestions:

  • Cinematick
  • Ticketwise
  • CineMaven
  • ShowTracker
  • MovieMate
  • FlickFiler
  • BoxOfficeBoss
  • FilmFrenzy
  • CineHub
  • ScreenSavvy
  • CinemaFlow
  • MovieMaster
  • SeatSquad
  • FilmFixer
  • TicketTrove
  • CinemaCraze
  • FilmFanatic
  • ShowSavant
  • CineStream
  • MovieMania

Docs Documento Funcional PI

https://campus.europaeducationgroup.es/courses/33195/files/6720728?module_item_id=712297

Info:

Descripción breve del proyecto
En el marco del Proyecto integrador nos planteamos como objetivo una aplicación móvil para consultar la cartelera de un cine, simular la compra de entradas o consultar las salas libres para reservarlas para realización de eventos:

  • Determinar el alcance y a quién va destinada la aplicación.

  • Qué funcionalidades va a tener.

  • Qué datos se van a manipular: modelo de datos

Objetivos generales del proyecto

Mediante este trabajo se pretende que los alumnos consigan:

  • Gestionar y realizar el trabajo del área asignada, en relación con las cargas de trabajo propias del Ciclo Formativo (Planificación del tiempo).
  • Realizar consultas a la persona adecuada y saber respetar la autonomía de los compañeros.
  • Mantener el espíritu de innovación y actualización en el ámbito de su trabajo, buscando información para la resolución de problemas de forma autónoma y mostrando empatía, habilidades para la sinergia de equipos y liderazgo.
  • Gestionar de forma eficaz los conflictos que se puedan producir, mediando y contribuyendo al establecimiento de un ambiente de trabajo agradable y actuando en todo momento de forma sincera, respetuosa y tolerante.
  • Resolver problemas y tomar decisiones individuales, siguiendo las normas y procedimientos establecidos, definidos dentro del ámbito de su competencia.

Módulos Formativos involucrados

  • Acceso a Datos
  • Programación Multimedia y Dispositivos Móviles

Metodología

Para el proyecto se utilizará la metodología ágil SCRUM​. Un framework de desarrollo ágil de software​ para gestionar el desarrollo de productos. Se define como una estrategia flexible e integral de desarrollo del producto donde un equipo trabaja como unidad para alcanzar un objetivo, los retos asumen un enfoque secuencial del desarrollo de producto; se habilita a los equipos para organizarse por sí mismos animando a la colaboración presencial u online de todos los miembros del equipo, así como a una comunicación diaria cara a cara de todos los miembros y perfiles en el proyecto.

Glosario (Roles)

  • Product Owner PO: Define los “ítems” que contendrá el Product Backlog y su orden. (Profesores).
  • Scrum Master SM: Supervisa y facilita que se aplique correctamente Scrum
  • Development Team DT: Estiman el esfuerzo de los ítems del Sprint Backlog. Toman todas las decisiones dentro del Sprint. Se autoorganizan y son autosuficientes para realizar el Product Backlog a partir de este documento y las reuniones con el PO.
  • Cloud Master: Mantiene GitHUB
  • Designer: Responsable de las decisiones relacionadas con el diseño de interacción, la experiencia de usuario y la estética.
  • Webgrafía

Cómo gestionar proyectos con Scrum:

http://www.proyectosagiles.org/que-es-scrum

La guía de Scrum en una página:

http://es.scribd.com/doc/134880180/SCRUM-La-guia-de-1-pagina

Snackbar instead of toasts

Is your feature request related to a problem? Please describe.
Toasts should only be used for notifying the user when the app is running in the background.

Describe the solution you'd like
Using snackbars would make our app comply with the Android dev specs.

Describe alternatives you've considered
None

Additional context
None

Improve Activity issues formatting

Currently, our issues with the Activity tag are not well documented nor formatted. I would propose improving this by adding the following fields in the existing issues:

  • Ongoing data: Data structures required by this activity. Without those, this activity will not work as expected.
  • Outgoing data: Data structures coming out of this activity. If this activity modifies an object coming from the ongoing group, it should be place here too.
  • Entry activity: The activity which made the invocation to this one. It may be empty (ie: the case of the launch activity)
  • Exit activity: The activity to be invoked after this one has finished its purpose.

Having a draft of the activity would also be helpful, for getting a preview of how it would look like.

Logo selection - Discussion

Hi team ✋🏼 !

The project looks amazing, but we must not forget about the branding of the project. What do you have in mind for the logo? I have made a sketch that could be a very good option. Let me know your feedback! (proofs)

What do you think?
1
2

Docs - App features

Let's discuss the features of the App.

This issue should be closed once a document in the wiki has been filled.

BUG - On buy ticket

Case:

A new user registers, tries to purchase a movie and when selecting seats selects two or more, upon checkout in the main menu he is assigned duplicate tickets.

After testing this, I have tried to purchase a single ticket of another movie, it is added duplicate but with the same name as the previous ones. Video

Please, if someone starts working on this BUG react to the issue.

Get encoded room layout for given RoomId

What does this method do?
Returns the encoded layout (#22) for the corresponding RoomId

Input
The roomId of the required room.

Output
Character[][]

Additional info

  • This method should be implemented instead of #31, so I can keep the original code structure.

Docs Wiki

Use the wiki of the repository as the source for all documentation.

DB data filtering implementation

Currently, #28 can only query all data available on DB. Specific registers will be required for implementing several activities (ex: #10 needs all the seat reservations made on the selected Room, so the only way to do it is filtering the server result on the client, not very efficient...).

Should we keep using this way of querying the DB or should the API expose methods for specific queries?

Full data insertion method

What does this method do?
Inserts a SeatReservation, with its corresponding Reservation onto the database.

Input
Both the SeatReservation and the Reservation containing the user_id.

Output
None (at least usable data)

Additional info
It would be useful having onSuccess and onFailiure callbacks to handle the DB response.

Establish Git branch naming conventions

We should all agree a convention for naming our branches. My proposal would be the following:

  1. Branch type first, followed by a hyphen (-):

    • wip Work in progress branches
    • dev Our own branches (the ones where we could merge small changes without affecting the others)
    • rel Release branch, the one where everything should work
  2. Feature identifier (snake_case): What will this branch bring to the project

An example of this would be the following branch:
wip-my_buggy_feature

After closing this issue, the final convention should be merged on the project wiki.

Any ideas or suggestions are appreciated!

NavActivity base class

Our activities need a way to move their data forward until the final activity, where the booking will be made.

For easing this and making the codebase more legible, a NavActivity base class, which will be extended by every other class in the app will provide the following functionality:

  • Method for starting the next activity, advanceActivity: Takes a lambda, which will define the next intent about to be launched.
    - Method for collecting this activity's extra object parcels, collectData: An abstract method, which will receive the Intent created by advanceActivity, and will be free to overload it with custom extras (though it's intended to put only the current activity extras).

Finally, an activity based on the resulting Intent will be started.

Edit: collectData won't be needed anymore, as NavActivity class is able to access the current Intent and directly copy the data onto the new Intent

Query room configs by RoomID

What does this method do?
Get all the room configurations given a roomId.

Input
roomId

Output
ArrayList of RoomConfigs

Additional info
None

Encoded room layouts

The problem

SeatSelectionActivity requires an "Encoded Room Layout" for working properly.
This is, a two-dimensional array containing a set of characters defining the state of the seats located on the room. The current characters are the following:

  • f: Free seat, can be selected by the user, tinted with greenish color
  • o: Occupied seat, cannot be selected by the user, tinted with reddish color
  • : Non-existent seat, used for defining the room's structure

The array should be made out of Character objects, as they implement the Serializable interface and can be moved between activities with ease.

An example of the layout would be the following

Encoded room Rendered room
image image

How to

With that out of the way, multiple problems arise:

  • How should we store this layouts?: Our db model provides a way to keep track of users' bookings, but there's no way to know which seats are Non-existent, so we should change our model (#16) or ignore this feature completely.
  • Rooms must be parsed before entering SeatSelectionActivity*: This means, after the user has selected a film at #14, but before entering #10, we must generate the Encoded Room Layout containing all the existing seats.

Get reservations by user

What does this method do?
Given a user, return a list of their reservations.

Input
User model class.

Output
ArrayList of SeatReservations

Additional info
Required by #43

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.