An open API service indexing awesome lists of open source software.

https://github.com/itsabdessalam/cynov

Cinema Project C# - Console
https://github.com/itsabdessalam/cynov

app c-sharp chsarp console dotnet

Last synced: about 2 months ago
JSON representation

Cinema Project C# - Console

Awesome Lists containing this project

README

        

# Projet Cynov

> Projet permettant de mettre en pratique ses connainssances en C#

## Objectif

Utiliser les notions vues en cours, à savoir : les fonctions, les collections, streams, programmation objet...

## Description du projet

Réaliser une application pour le cinéma Cynov

## Compétences évaluées

- Livrer un code qui compile
- Bonne utilisation des Design Patterns
- Savoir modéliser une structure objet via une demande client
- Utilisation de l’orienté objet
- Savoir stocker des données dans une base de données
- Bonne utilisation de LINQ
- Gérer les comportements imprévus via des exceptions
- Gérer des chemins de code différents selon le niveau de droits du visiteur
- Savoir verrouiller son code pour réduire les effets de bord futurs
- Qualité de code et Conventions de nommage

## Organisation du projet

Le projet se présente comme suit :

```
├─ Cynov
| ├─ Auditorium.cs
| ├─ FileManager.cs
| ├─ CynovContext.cs
| ├─ DataException.cs
| ├─ Film.cs
| ├─ FilmType.cs
| ├─ Main.cs
| ├─ Order.cs
| ├─ Program.cs
| ├─ Showtime.cs
| ├─ User.cs
| ├─ Utils.cs
| └─ Validator.cs
└─ Cynov.sln
```

## Classes et méthodes

### Class [`Auditorium`](Cynov/Auditorium.cs)

**Propriétés**

- Id int
> Identifiant de la salle nécessaire aussi à la BDD
- Name string
> Nom de la salle
- Capacity string
> Capacité totale de la salle
- CurrentCapacity string
> Capacité actuelle de la salle

### Class [`FileManager`](Cynov/FileManager.cs)

**Propriétés**

- \_fileManager FileManager
> Type FileManager
- \_fileName string
> Nom du fichier sur lequel sera écrit le contenu
- \_streamWriter StreamWriter
> StreamWriter pour écrire du contenu

**Méthodes**

- WriteToFile(string fileName, string content) -> void

### Class [`Film`](Cynov/Film.cs)

**Propriétés**

- Id int
> Identifiant de Film nécessaire aussi à la BDD
- Name string
> Nom du film
- Director string
> Directeur du film
- Producer string
> Producteur du film
- Gender string
> Genre du film
- ReleaseDate DateTime
> Date de sortie
- Type FilmType
> Type du film (enum de 3 valeurs)
- Showtimes List\()
> Liste des séances associées

### Class [`FilmType`](Cynov/FilmType.cs)

### Class [`Main`](Cynov/Main.cs)

**Méthodes**

- Start() -> void

> Lance le programme

- Menu() -> int

> Affiche le menu récupére le choix de l'utlisateur

- SignUp() -> void

> Inscrit un utilisateur

- SignIn() -> void

> Connecte l'utilisateur

- Search() -> void

> Effectue une recherche

- Exit() -> void

> Quitte la console

- GetCreditentials(User u) -> void

> Récupère les identifiants de l'utilisateur

- AddFilms() -> void

> Ajoute des films

- AddShowTimes() -> void

> Ajoute des séances

- RegisterToShowTime() -> void

> Enregistre une séance pour un utilisateur

- ViewUserHistory() -> void

> Voir les commandes de l'utilisateur

- ListFilms() -> void

> Liste les films

- ListAuditoriums() -> void

> Liste les salles

- ListShowTimes(IEnumerable showtimes = null) -> void

> Liste les séances

- CreateAuditoriums() -> void

> Crée des salles

- AddOrder(Showtime showTime) -> Order

> Affecte une commande

- PrintTicket(User u, Order o) -> void

> Imprime le bon de commande

- IsAlreadyRegistered(int inputChoice, User user) -> bool

> Vérifie si l'utilisateur a déjà pris une séance

### Class [`Order`](Cynov/Order.cs)

**Propriétés**

- Id int
> Identifiant de commande nécessaire aussi à la BDD
- PrintDate DateTime
> Date d'impression
- Company string
> Le ciméma en question d'où provient la commande
- Price double
> Prix de la commande
- OrderId string
> GUID de la commande
- User User
> L'utilisateur associé
- Showtime Showtime
> La séance associée

### Class [`Program`](Cynov/Program.cs)

### Class [`Showtime`](Cynov/Showtime.cs)

**Propriétés**

- Id int
> Identifiant de la séance nécessaire aussi à la BDD
- Auditorium Auditorium
> La salle associée
- Start DateTime
> Date de début
- Finish DateTime
> Date de fin
- ThreeDimensional bool
> En 3D
- OriginalVersion bool
> En VO
- Users List\()
> Liste d'utilisateurs associés
- Film Film
> Film associé

### Class [`User`](Cynov/User.cs)

**Propriétés**

- Id int
> Identifiant de l'utilisateur nécessaire aussi à la BDD
- Username string
> Nom d'utilisateur
- Email string
> Email de l'utilisateur
- Password string
> Mot de passe de l'utilisateur
- IsAdmin bool
> Booléen si administrateur
- IsActive bool
> Booléen si le compte est actif
- LastUpdateTime DateTime
> Dernière date de mise à jour
- Showtimes List\()
> Liste des séances associées
- Orders List\()
> Liste des commandes associées

**Méthodes**

- toString() -> string

### Class [`Utils`](Cynov/Utils.cs)

> Contient des méthodes pour le chiffrement du mot de passe et les conversions de date

### Class [`Validator`](Cynov/Validator.cs)

## Parcours utilisateur / Scénario d'usage

On part du principe qu'on autorise que les insriptions d'utilisateurs ordinaires. Pour rajouter un administrateur on doit set le champ `IsAdmin` (par défaut false) à true lors de la création. Un administrateur est déjà crée `[email protected]/1234`. Ce dernier peut rajouter des films et des séances. Un utilisateur ordinaire est aussi crée `[email protected]/1234`. Celui ci pourra s'incrire à une séance, effectuer une recherche et voir ses séances achetées. Lors de son achat un fichier est créé sur son bureau et ce sur le format suivant `20181109-070311-cc93e817fa-abdessalam.txt` celui-ci servira de ticket.

## Execution du programme

Ce projet a été réalisé sur Visual Studio sous Windows 10

### Windows

Ouvrir le projet avec Visual Studio

### Linux

Si vous êtes sous Linux vérifiez que vous avez ces paquets installés

- dotnet-host
- dotnet-runtime-2.1
- dotnet-sdk-2.1

Ensuite deplacez vous dans le dossier contenant le projet et lancez la commande :

dotnet run

## Auteur

[Abdessalam BENHARIRA](https://github.com/Abdessalam98)