public static List <PrenotazioneModel> prenotazioni_geList() { List <PrenotazioneModel> model = new List <PrenotazioneModel>(); try { using (Associazione_DBDataContext db = new Associazione_DBDataContext()) { var sql = from prenotazione in db.Prenotazione join sala in db.Sala on prenotazione.Sala equals sala.ID join ponte in db.PrenotazioneStrumentazione on prenotazione.ID equals ponte.ID_Prenotazione into p from ponte in p.DefaultIfEmpty() join strumetazione in db.Strumentazione on ponte.ID_Strumentazione equals strumetazione.ID into s from strumentazione in s.DefaultIfEmpty() where prenotazione.Utente == SessionObjects.LoggedUser.ID && prenotazione.Giorno.Add(prenotazione.OraI) >= DateTime.Now orderby prenotazione.OraI select new { Prenotazione = prenotazione, Sala = sala, Strumentazione = (strumentazione != null ? strumentazione : null) }; if (sql != null) { var temp = sql.ToList(); if (temp.Count > 0) { foreach (var item in temp) { PrenotazioneModel tempModel = model.Where(x => x.ID == item.Prenotazione.ID).FirstOrDefault(); if (tempModel == null) { tempModel = new PrenotazioneModel(item.Prenotazione, item.Sala); model.Add(tempModel); } if (item.Strumentazione != null) { tempModel.Strumentazione.Add(new StrumentazioneModel(item.Strumentazione)); } } } } } } catch (Exception e) { } return(model); }
private async Task <DialogTurnResult> PromptForPrenotazioneStepAsync( WaterfallStepContext stepContext, CancellationToken cancellationToken) { var risp = (stepContext.Result as FoundChoice).Value; var context = stepContext.Context; if (risp.Equals("si")) { try { PosteggioModel posto = await Utility.Utility.setPosteggioAutoassegnato(Utility.Utility.lotto_id); if (posto != null) { PrenotazioneModel prenotazione = await Utility.Utility.prenotaPosteggio(Utility.Utility.lotto_id, posto.id_posteggio); if (prenotazione != null) { //BasicBot.tempoPrenotazione = DateTime.Now; BasicBot.tempoPrenotazione = DateTime.Now.AddHours(1); BasicBot.prenotazione = true; var prenotazioneNomeLotto = prenotazione.nomeLotto; var prenotazioneIdPosto = prenotazione.id_posto; //risposte possibili string[] responses = { "Hai effettuato una pranotazione in " + prenotazioneNomeLotto + " nel parcheggio " + prenotazioneIdPosto, "La tua prenotazione è la seguente: " + prenotazioneNomeLotto + ", " + prenotazioneIdPosto, "Il posteggio in " + prenotazioneNomeLotto + ", numero " + prenotazioneIdPosto + " ti è stato assegnato", }; Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random return(await stepContext.EndDialogAsync()); } else { PrenotazioneModel verificaPrenotazione = await Utility.Utility.getPrenotazione(Utility.Utility.bot_id); if (verificaPrenotazione != null) { if (DateTime.Compare(DateTime.Now, DateTime.Parse(BasicBot.tempoPrenotazione.ToString())) > 0) { var resp = await Utility.Utility.cancellaPrenotazione(verificaPrenotazione.id_posto); if (resp) { string[] responses = { "La tua prenotazione è scaduta!", "E' terminato il tempo disponibile per il tuo posteggio", "La prenotazione è espirata", }; //rispsote possibili Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random BasicBot.prenotazione = false; return(await stepContext.EndDialogAsync()); } } else { string[] responses = { "Possiedi già una prenotazione!", "Puoi avere solo un posto!", "Ma quanti posti vuoi oh! Ne hai già uno!", }; //rispsote possibili Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random return(await stepContext.EndDialogAsync()); } } //else //{ // string[] responses = { "Tutti i posti sono occupati!", // "Non ci sono più posti!", // "Vuoi prenotare un posto eh?! Beh son finiti!", }; //rispsote possibili // Random rnd = new Random(); //crea new Random class // int i = rnd.Next(0, responses.Length); // await context.SendActivityAsync(responses[i]); //genera una risposta random // return await stepContext.EndDialogAsync(); //} } } return(await stepContext.EndDialogAsync()); } catch { await context.SendActivityAsync($"Impossibile visualizzare la prenotazione!"); return(await stepContext.EndDialogAsync()); } } else { await context.SendActivityAsync($"Fammi sapere se cambi idea!"); return(await stepContext.EndDialogAsync()); } }
// Funzione che mostra la scadenza della prenotazione. private async Task <DialogTurnResult> DisplayScadenzaStateStepAsync( WaterfallStepContext stepContext, CancellationToken cancellationToken) { var context = stepContext.Context; PrenotazioneModel prenotazione = await Utility.Utility.getPrenotazione(Utility.Utility.bot_id); try { if (prenotazione != null) { if (DateTime.Compare(DateTime.Now, DateTime.Parse(BasicBot.tempoPrenotazione.ToString())) > 0) { var resp = await Utility.Utility.cancellaPrenotazione(prenotazione.id_posto); if (resp) { string[] responses = { "La tua prenotazione è scaduta!", "E' terminato il tempo disponibile per il tuo posteggio", "La prenotazione è espirata", }; //rispsote possibili Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random BasicBot.prenotazione = false; return(await stepContext.EndDialogAsync()); } } else { DateTime now = DateTime.Now; TimeSpan differenza; differenza = BasicBot.tempoPrenotazione.Subtract(now); int minuti = (int)(differenza.TotalMinutes); int secondi = (int)(differenza.TotalSeconds); int ore = (int)(differenza.TotalHours); int giorno = (int)(differenza.TotalDays); string[] responses = { "Il tuo parcheggio è ancora disponibile per " + minuti + " minuti e " + (secondi - (minuti * 60)) + " secondi", "La disponibilità del tuo parcheggio scade tra " + minuti + " minuti e " + (secondi - (minuti * 60)) + " secondi", "Hai ancora " + minuti + " minuti e " + (secondi - (minuti * 60)) + " secondi per usufruire del posteggio prenotato", }; await context.SendActivityAsync($"La tua prenotazione è riservata per il giorno " + BasicBot.tempoPrenotazione.ToString("dd MMMM yyyy") + " dalle ore " + BasicBot.tempoPrenotazione.AddHours(-1).ToString("HH:mm:ss") + " alle ore " + BasicBot.tempoPrenotazione.ToString("HH:mm:ss")); Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random //await context.SendActivityAsync($"Il tuo parcheggio sarà disponibile ancora per: {minuti} minuti e {secondi - (minuti * 60)} secondi"); return(await stepContext.EndDialogAsync()); } return(await stepContext.EndDialogAsync()); } else { string[] responses = { "Non esiste alcuna prenotazione attiva!", "Io non vedo nessuna prenotazione!", "Ma quale prenotazione intendi scusa..", }; Random rnd = new Random(); int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random tra quelle presenti return(await stepContext.EndDialogAsync()); } } catch { await context.SendActivityAsync($"Impossibile visualizzare la scadenza della prenotazione"); return(await stepContext.EndDialogAsync()); } }
// Prompt per cancellare la prenotazione private async Task <DialogTurnResult> PromptForCancellaPrenotazioneStepAsync( WaterfallStepContext stepContext, CancellationToken cancellationToken) { var context = stepContext.Context; PrenotazioneModel prenotazione = await Utility.Utility.getPrenotazione(Utility.Utility.bot_id); try { if (prenotazione != null) { if (DateTime.Compare(DateTime.Now, DateTime.Parse(BasicBot.tempoPrenotazione.ToString())) > 0) { var resp = await Utility.Utility.cancellaPrenotazione(prenotazione.id_posto); if (resp) { string[] responses = { "La tua prenotazione è scaduta!", "E' terminato il tempo disponibile per il tuo posteggio", "La prenotazione è espirata", }; //rispsote possibili Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random BasicBot.prenotazione = false; return(await stepContext.EndDialogAsync()); } } else { BasicBot.prenotazione = false; //rispsote possibili string[] responses = { "Prenotazione cancellata con successo!", "La prenotazione... Via! Andata! Caput!", "Hai cestinato la tua prenotazione!", }; Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random await Utility.Utility.cancellaPrenotazione(prenotazione.id_posto); return(await stepContext.EndDialogAsync()); } } else { string[] responses = { "Non esiste alcuna prenotazione attiva!", "Io non vedo nessuna prenotazione!", "Ma quale prenotazione intendi scusa..", }; Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random return(await stepContext.EndDialogAsync()); } return(await stepContext.EndDialogAsync()); } catch { await context.SendActivityAsync($"Impossibile cancellare la prenotazione"); return(await stepContext.EndDialogAsync()); } }
// Funzione per mostrare la prenotazione. private async Task <DialogTurnResult> DisplayPrenotazioneStateStepAsync( WaterfallStepContext stepContext, CancellationToken cancellationToken) { var context = stepContext.Context; PrenotazioneModel prenotazione = await Utility.Utility.getPrenotazione(Utility.Utility.bot_id); try { // Mostra la prenotazione se attiva. if (prenotazione != null) { if (DateTime.Compare(DateTime.Now, DateTime.Parse(BasicBot.tempoPrenotazione.ToString())) > 0) { var resp = await Utility.Utility.cancellaPrenotazione(prenotazione.id_posto); if (resp) { string[] responses = { "La tua prenotazione è scaduta!", "E' terminato il tempo disponibile per il tuo posteggio", "La prenotazione è espirata", }; //rispsote possibili Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random BasicBot.prenotazione = false; return(await stepContext.EndDialogAsync()); } } else { var prenotazioneNomeLotto = prenotazione.nomeLotto; var prenotazioneIdPosto = prenotazione.id_posto; string[] responses = { "La tua prenotazione? " + prenotazioneNomeLotto + ", " + prenotazioneIdPosto, "Hai prenotato il parcheggio " + prenotazioneNomeLotto + " numero " + prenotazioneIdPosto, prenotazioneNomeLotto + ", " + prenotazioneIdPosto + ", dovrebbe essere questa!", }; Random rnd = new Random(); //crea new Random class int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random tra quelle presenti return(await stepContext.EndDialogAsync()); } } else // Nega l'esistenza di una prenotazione { string[] responses = { "Non esiste alcuna prenotazione attiva!", "Io non vedo nessuna prenotazione!", "Ma quale prenotazione intendi scusa..", }; Random rnd = new Random(); int i = rnd.Next(0, responses.Length); await context.SendActivityAsync(responses[i]); //genera una risposta random tra quelle presenti return(await stepContext.EndDialogAsync()); } return(await stepContext.EndDialogAsync()); } catch { await context.SendActivityAsync($"Impossibile visualizzare la prenotazione"); return(await stepContext.EndDialogAsync()); } }