Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
50027ec
Change visibility of some classes.
nicioniz Jul 15, 2017
feeaec2
Modify the visibility of all classes in public.
nicioniz Jul 15, 2017
55f479a
Ho aggiunto la classe tavolo e calcolatempo del presenter, è una prov…
TheSp1ke Jul 24, 2017
aeba09e
- lievi correzioni ai controlli effettuati nelle varie classi del model
Gabri1495 Jul 31, 2017
214ec9f
Merge branch 'GUIAdd' into master
nicioniz Aug 1, 2017
4b8b1f6
Merge branch 'master' of https://github.com/nicioniz/PrimaProvaProget…
Gabri1495 Aug 1, 2017
909176f
- Aggiunto lavoro di Simo. Ormai che è stato effettuato il merge di G…
Gabri1495 Aug 1, 2017
4146385
Aggiunta della finestra di modifica. Può modificare qualsiasi oggetto…
nicioniz Aug 3, 2017
c0caecb
Aggiunto attributo editabile alla classe tavolo
nicioniz Aug 3, 2017
7434abf
Alcune prove in Test usando il menuForm e la finestra di modifica
nicioniz Aug 3, 2017
da0d2ef
Aggiunto il MenuFormPresenter e fatte piccole modifiche
nicioniz Aug 3, 2017
753e3ad
Non sapendo bene come fare il merge tra persistenceAdd e il master ho…
nicioniz Aug 3, 2017
5481943
Piccola modifica all'aggiunta di nuova pietanza nel presenter
nicioniz Aug 3, 2017
0e50a70
Piccole modifiche ai file di persistenza
nicioniz Aug 4, 2017
f86b2a5
Piccola correzione all'errore di "grafica" alla scelta menu
nicioniz Aug 4, 2017
7d72b37
Aggiunto il FirstWindowFormPresenter. Piccole modifiche ad altri file
nicioniz Aug 4, 2017
4ee1b1a
Creata finestra per totem clienti, presente solo la parte per la visu…
nicioniz Aug 4, 2017
1977cdf
Modificata ClientiForm per inserire la visualizzazione dei tempi d'at…
nicioniz Aug 5, 2017
7aef7b3
-bloccate le dimensioni delle varie form dopo averne definite le gius…
Gabri1495 Aug 5, 2017
381eef6
Changelog
Gabri1495 Aug 10, 2017
3b62efe
Implementazione del calcola tempo e nuova finestra per inserire una n…
nicioniz Aug 15, 2017
42ac6d1
Piccole correzioni
nicioniz Aug 15, 2017
717abef
Changelog:
Gabri1495 Aug 17, 2017
3782283
Correzione divisione per zero in GetTempoAttesaMinimo più modifica al…
nicioniz Aug 17, 2017
54c7789
Aggiunta della CaposalaForm e relativo presenter, manca l'inserimento…
TheSp1ke Aug 18, 2017
e40f047
Aggiunta funzionalità alla CaposalaForm, manca la schedulazione delle…
TheSp1ke Aug 19, 2017
a0a22ac
Changelog:
Gabri1495 Aug 19, 2017
19e1cbb
Bug fixes e implementazione delle funzionalità di occupa/libera tavolo.
TheSp1ke Aug 20, 2017
efdbf97
Bug fixes
TheSp1ke Aug 20, 2017
e0e2d69
Aggiunta changelog di Gabri, nel commit di prima manca la parte del c…
TheSp1ke Aug 20, 2017
0ab1965
Spostati tutti gli eventhandler dal caposala form al suo presenter
nicioniz Aug 20, 2017
06699bc
Piccole modifiche e aggiornamento codice (pre-spostamento degli handler)
TheSp1ke Aug 20, 2017
5dfde4f
Salvataggio modifiche
TheSp1ke Aug 20, 2017
73d3494
Risoluzione bug calcolatempo,
nicioniz Aug 20, 2017
e5a1ecf
Merge branch 'master' of https://github.com/nicioniz/PrimaProvaProget…
nicioniz Aug 20, 2017
7f1cb44
Ho fatto solo alcune piccole modifiche alla dimensione delle ighe nel…
nicioniz Aug 21, 2017
d2261dc
Per l'occupazione del tavolo viene presa la prenotazione selezionata
nicioniz Aug 21, 2017
80d753b
Changelog:
Gabri1495 Aug 22, 2017
2798f20
Changelog:
Gabri1495 Aug 22, 2017
3fa422a
Aggiunto pulsante Fine Serata nel caposala form
nicioniz Aug 23, 2017
6aae712
Modifica HideSelection = true
nicioniz Aug 23, 2017
8911201
Changelog:
Gabri1495 Aug 24, 2017
2c316ba
Update README.md
nicioniz Nov 10, 2017
1624a33
Update README.md
nicioniz Apr 14, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added AlgoritmoDiPrevisioneDiagram.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added CriteriDiSelezioneDiagram.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
58 changes: 58 additions & 0 deletions PrimaProvaProgetto/CriteriDiSelezioneDiagram.cd
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1">
<Class Name="PrimaProvaProgetto.Model.CriterioDiSelezioneAll">
<Position X="6.75" Y="0.5" Width="1.75" />
<TypeIdentifier>
<HashCode>AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\CriteriDiSelezione.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="PrimaProvaProgetto.Model.CriterioDiSelezioneBase">
<Position X="4" Y="0.5" Width="2.25" />
<TypeIdentifier>
<HashCode>AAAAAAgAAAAAAAAAAAAAAAIAAAAAAIAAAAAAAAAAAAA=</HashCode>
<FileName>Model\CriteriDiSelezione.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Field Name="_innerCriterio" />
</ShowAsAssociation>
<Lollipop Position="0.2" />
</Class>
<Class Name="PrimaProvaProgetto.Model.CriterioDiSelezioneByCategoria" Collapsed="true">
<Position X="6.5" Y="3" Width="2.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\CriteriDiSelezione.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="PrimaProvaProgetto.Model.CriterioDiSelezioneByNotContainsAllergene" Collapsed="true">
<Position X="0.5" Y="3" Width="3.25" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\CriteriDiSelezione.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="PrimaProvaProgetto.Model.CriterioDiSelezioneByDisp" Collapsed="true">
<Position X="4" Y="3" Width="2.25" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\CriteriDiSelezione.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="PrimaProvaProgetto.Model.CriterioDiSelezioneBuilder">
<Position X="8.5" Y="1.75" Width="2" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\CriterioDiSelezioneBuilder.cs</FileName>
</TypeIdentifier>
</Class>
<Interface Name="PrimaProvaProgetto.Model.ICriterioDiSelezione" Collapsed="true">
<Position X="1" Y="0.5" Width="1.75" />
<TypeIdentifier>
<HashCode>AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Model\ICriterioDiSelezione.cs</FileName>
</TypeIdentifier>
</Interface>
<Font Name="Segoe UI" Size="9" />
</ClassDiagram>
94 changes: 94 additions & 0 deletions PrimaProvaProgetto/LocaleRistorazioneDiagram.cd
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1" MembersFormat="FullSignature">
<Class Name="PrimaProvaProgetto.Model.Ristorante">
<Position X="10.25" Y="4.25" Width="3.5" />
<TypeIdentifier>
<HashCode>ICAEAAEAAABAAAAAAAAAAEAABAIIAAAACAAQACAACAA=</HashCode>
<FileName>Model\Ristorante.cs</FileName>
</TypeIdentifier>
<ShowAsCollectionAssociation>
<Field Name="_menu" />
<Field Name="_listaPrenotazioni" />
<Field Name="_allergeni" />
<Field Name="_tavoli" />
</ShowAsCollectionAssociation>
</Class>
<Class Name="PrimaProvaProgetto.Model.Allergene">
<Position X="16.25" Y="4.75" Width="2.5" />
<TypeIdentifier>
<HashCode>AAAAIAAAAAAAAAAEgAAAAAAAAAAAAIAAAAAAAAEAAAA=</HashCode>
<FileName>Model\Allergene.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="PrimaProvaProgetto.Model.Prenotazione">
<Position X="14.75" Y="0.5" Width="3.5" />
<TypeIdentifier>
<HashCode>AAAAIAAAAAAQAAAEAAAAAAAAAAAAAAEAAACAgAEAAAA=</HashCode>
<FileName>Model\Prenotazione.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="PrimaProvaProgetto.Model.Pietanza">
<Position X="17" Y="8.5" Width="3" />
<TypeIdentifier>
<HashCode>ABEAAAAAIQAAAgAkBAAAAAAABAAAAAAAIAAQIAQACgA=</HashCode>
<FileName>Model\Pietanza.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Field Name="_prezzo" />
<Field Name="_categoria" />
</ShowAsAssociation>
<ShowAsCollectionAssociation>
<Field Name="_allergeni" />
</ShowAsCollectionAssociation>
</Class>
<Class Name="PrimaProvaProgetto.Model.Tavolo">
<Position X="5.5" Y="4" Width="3.25" />
<TypeIdentifier>
<HashCode>AAACAQAEAAAAAAB0ABAACAAAARAAAAAAAAAAAgABAAA=</HashCode>
<FileName>Model\Tavolo.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Field Name="_calcolaTempo" />
<Field Name="_stato" />
</ShowAsAssociation>
</Class>
<Class Name="PrimaProvaProgetto.Model.CalcolaTempo">
<Position X="0.5" Y="4.25" Width="3" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEAAAAAAAIKA=</HashCode>
<FileName>Model\CalcolaTempo.cs</FileName>
</TypeIdentifier>
</Class>
<Class Name="PrimaProvaProgetto.Presentation.PietanzaControl">
<Position X="20.5" Y="4.25" Width="1.5" />
<TypeIdentifier>
<HashCode>AAFAAEAAACAAAgAACACBAAACAAAAQgAAEBEQAAAAAAA=</HashCode>
<FileName>Presentation\PietanzaControl.cs</FileName>
</TypeIdentifier>
<ShowAsAssociation>
<Field Name="_pietanza" />
</ShowAsAssociation>
</Class>
<Struct Name="PrimaProvaProgetto.Model.Money">
<Position X="13.25" Y="8.75" Width="2.5" />
<TypeIdentifier>
<HashCode>ABABAAAACAAAAAAEgAAAAAAAAAAAAIAAAAAgAAAAAAA=</HashCode>
<FileName>Model\Money.cs</FileName>
</TypeIdentifier>
</Struct>
<Enum Name="PrimaProvaProgetto.Model.Categoria">
<Position X="21.25" Y="10.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAgAAAAQAgAAACAAAAAAAAAAAAAEAABAAAAAAA=</HashCode>
<FileName>Model\Categoria.cs</FileName>
</TypeIdentifier>
</Enum>
<Enum Name="PrimaProvaProgetto.Model.StatoTavolo">
<Position X="7.25" Y="2" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA=</HashCode>
<FileName>Model\StatoTavolo.cs</FileName>
</TypeIdentifier>
</Enum>
<Font Name="Segoe UI" Size="9" />
</ClassDiagram>
8 changes: 7 additions & 1 deletion PrimaProvaProgetto/Model/AlgoritmoPrevisioneSemplice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,16 @@ public class AlgoritmoPrevisioneSemplice : IAlgoritmoPrevisione
*/
public TimeSpan OttieniPrevisione(List<TempoPermanenza> vecchiePermanenze, int numeroPersone)
{
if (numeroPersone >= 7)
return new TimeSpan(Convert.ToInt64(
vecchiePermanenze
.Where(tp => tp.NumeroCoperti >= numeroPersone)
.Average(tp => tp.Tempo.Ticks)));
return new TimeSpan(Convert.ToInt64(
vecchiePermanenze
.Where(tp => tp.NumeroCoperti == numeroPersone)
.Where(tp => tp.NumeroCoperti >= numeroPersone && tp.NumeroCoperti <= (numeroPersone + 1))
.Average(tp => tp.Tempo.Ticks)));

}

}
Expand Down
12 changes: 6 additions & 6 deletions PrimaProvaProgetto/Model/Allergene.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ public class Allergene
{
private string _nome;

public Allergene(String nome)
{
Nome = nome;
}

public string Nome
{
get
Expand All @@ -22,12 +27,7 @@ public string Nome
_nome = value ?? string.Empty;
}
}

public Allergene(String nome)
{
Nome = nome;
}


public Allergene() : this(null) { }

public override string ToString()
Expand Down
43 changes: 43 additions & 0 deletions PrimaProvaProgetto/Model/CalcolaTempo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PrimaProvaProgetto.Model
{
public class CalcolaTempo
{
private int _numeroPosti;
private DateTime _oraInizioPasto;

public CalcolaTempo(int numeroPosti)
{
_numeroPosti = numeroPosti;
}

public TimeSpan TempoRimanente
{
get
{
if (_numeroPosti == 0)
return TimeSpan.Zero;
TimeSpan tempoPrevisto = Previsione.GetInstance().OttieniPrevisione(_numeroPosti);
TimeSpan tempoRimanente = (_oraInizioPasto + tempoPrevisto) - DateTime.Now;
return tempoRimanente > TimeSpan.Zero ? tempoRimanente : TimeSpan.Zero;
}
}

public void OccupaTavolo()
{
_oraInizioPasto = DateTime.Now;
}

public void LiberaTavolo()
{
Previsione.GetInstance().InserisciTempoPermanenza(new TempoPermanenza(_numeroPosti, _oraInizioPasto, DateTime.Now));
//porcata: così quando libero il tavolo alle richieste successive otterrò 0 come tempo
_numeroPosti = 0;
}
}
}
2 changes: 1 addition & 1 deletion PrimaProvaProgetto/Model/CriteriDiSelezione.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class CriterioDiSelezioneAll : ICriterioDiSelezione
{
public List<Pietanza> GetPietanze()
{
return Ristorante.GetInstance().Menu;
return LocaleRistorazione.GetInstance().Menu;
}
}

Expand Down
21 changes: 21 additions & 0 deletions PrimaProvaProgetto/Model/CriterioDiSelezioneBuilder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PrimaProvaProgetto.Model
{
static class CriterioDiSelezioneBuilder
{
public static ICriterioDiSelezione GetCriterio(List<Categoria> categorie, List<Allergene> allergeni)
{
Categoria categoriaMaschera = 0;
categorie.ForEach(cat => categoriaMaschera = categoriaMaschera | cat);
ICriterioDiSelezione res = new CriterioDiSelezioneByDisp();
res = new CriterioDiSelezioneByCategoria(categoriaMaschera, res);
allergeni.ForEach(all => res = new CriterioDiSelezioneByNotContainsAllergene(all, res));
return res;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
using System;
using PrimaProvaProgetto.Persistance;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PrimaProvaProgetto.Model
{
public class Ristorante
public class LocaleRistorazione
{

private List<Pietanza> _menu;
private ObservableCollection<Prenotazione> _listaPrenotazioni;
private List<Allergene> _allergeni;

private static Ristorante _instance = null;
private List<Tavolo> _tavoli;
private static LocaleRistorazione _instance = null;

public List<Pietanza> Menu
{
Expand All @@ -29,6 +32,19 @@ public List<Pietanza> Menu
}
}

public List<Tavolo> Tavoli
{
get
{
return _tavoli;
}

set
{
_tavoli = value;
}
}

public ObservableCollection<Prenotazione> ListaPrenotazioni
{
get
Expand Down Expand Up @@ -57,20 +73,38 @@ public List<Allergene> Allergeni

public event NotifyCollectionChangedEventHandler ListaPrenotazioniChanged;

private Ristorante()
private LocaleRistorazione()
{
Menu = new List<Pietanza>();
Menu = MenuPersisterFactory.GetMenuLoader("SimpleMenuLoader").Load();
ListaPrenotazioni = new ObservableCollection<Prenotazione>();
Allergeni = LoadAllergeni();
//possiamo mettere il caricamento da file

/*
* Per ora al Ristorante ho lasciato una lista di soli tavoli, non so se possa servire un altro sistema
* magari la Form dei camerieri avrà anch'essa bisogno delle coordinate dei tavoli,
* ma mettere tali informazioni qui forse mescola dati con grafica
*/
Tavoli = LayoutPersisterFactory.GetLayoutLoader("SimpleJsonLayoutLoader").Load(TipoLayout.Vuoto).Values.ToList();

Allergeni = LoadAllergeni();

ListaPrenotazioni.CollectionChanged += ListaPrenotazioniChanged;
}
Application.ApplicationExit += Application_ApplicationExit;
}

private void Application_ApplicationExit(object sender, EventArgs e)
{
/*
* Potrebbe essere meglio spostare anche questo salvataggio?
* Forse farlo al momento dell'avvio del totem clienti riduce il rischio di perderlo
* (magari va tutto in crash prima della chiusura dell'applicazione)
*/
MenuPersisterFactory.GetMenuSaver("SimpleMenuSaver").Save(Menu);
}

public static Ristorante GetInstance()
public static LocaleRistorazione GetInstance()
{
if (_instance == null)
_instance = new Ristorante();
_instance = new LocaleRistorazione();
return _instance;
}

Expand Down
2 changes: 1 addition & 1 deletion PrimaProvaProgetto/Model/Money.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public override bool Equals(object obj)
return false;
}
var other = (Money)obj;
return Equals(other);
return Value == other.Value;
}

public override int GetHashCode()
Expand Down
4 changes: 2 additions & 2 deletions PrimaProvaProgetto/Model/Pietanza.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ public class Pietanza

public Pietanza(string titolo, Money prezzo, Categoria categoria, List<Allergene> allergeni, string descrizione = "", bool disponibile = true)
{
if (titolo == null)
throw new ArgumentNullException("titolo");
Titolo = titolo;
Descrizione = descrizione;
Prezzo = prezzo;
Expand All @@ -46,6 +44,8 @@ public string Titolo

set
{
if (value == null)
throw new ArgumentNullException("titolo");
_titolo = value;
OnChanged();
}
Expand Down
Loading