public static void ToggleViaggio(Flyer flyer, Viaggio viaggio) { if (flyer.Viaggi.Any(v => v.Id == viaggio.Id)) flyer.Viaggi.Remove(viaggio); else flyer.Viaggi.Add(viaggio); }
public Viaggio CreaNuovoViaggio() { var viaggio = new Viaggio() { DataPartenza = DateTime.Today.AddDays(1), DataChiusuraPrenotazioni = DateTime.Today }; return viaggio; }
public int CalcolaOrdinamentoPerNuovaTappa(Viaggio viaggio) { logger.Debug("Calcolo ordiamento nuova tappa per viaggio {0}", viaggio.Id); var tappe = viaggio.Tappe.Where(t => t.Tipo != TipoTappa.DESTINAZIONE); if (tappe != null && tappe.Count() > 0) { int result = tappe.Max(t => t.Ordinamento) + 1; logger.Debug("Tappe precedenti trovate, ordinamento nuova tappa = {0}", result); return result; } else { logger.Debug("Nessuna tappa trovata, ordinamento nuova tappa = 1"); return 1; } }
public ActionResult ViaggioTiledDetail(Viaggio viaggio) { return PartialView(viaggio); }
public ActionResult Save(Viaggio viaggio) { if (ModelState.IsValid) { Viaggio oldViaggio = vr.GetById(viaggio.Id); if (oldViaggio != null) { viaggio.Tappe = oldViaggio.Tappe; viaggio.Depliant = oldViaggio.Depliant; viaggio.PromoImage = oldViaggio.PromoImage; } viaggio.Agenzia = Session.getLoggedAgenzia(); // Gestione depliant e immagine promozionale if (Request.Files != null) { foreach (string fileName in Request.Files) { HttpPostedFileBase file = Request.Files[fileName] as HttpPostedFileBase; if (file.ContentLength == 0) continue; if (vm.isValidDepliantMimeType(file.FileName)) { logger.Info("Caricamento depliant per il viaggio {0}", viaggio); Int32 length = file.ContentLength; byte[] rawFile = new byte[length]; file.InputStream.Read(rawFile, 0, length); var allegato = new AllegatoViaggio() { RawFile = rawFile, NomeFile = file.FileName, Viaggio = viaggio }; viaggio.Depliant = allegato; } if (vm.isValidImageMimeType(file.FileName)) { logger.Info("Caricamento immagine promozionale per il viaggio {0}", viaggio); Int32 length = file.ContentLength; byte[] rawFile = new byte[length]; file.InputStream.Read(rawFile, 0, length); var allegato = new AllegatoViaggio() { RawFile = rawFile, NomeFile = file.FileName, Viaggio = viaggio }; viaggio.PromoImage = allegato; } } } vm.Save(viaggio); if (viaggio.Tappe != null && viaggio.Tappe.Count > 1 && viaggio.Tappe.SingleOrDefault(t => t.Tipo == TipoTappa.DESTINAZIONE) != null) { logger.Debug("Il percorso del viaggio è stato definito, per cui lo si redirige alla pagina di dettaglio per verifica"); return RedirectToAction("Detail", new { id = viaggio.Id }); } } return RedirectToAction("Edit", new { id = viaggio.Id }); }
private void SavePromoImage(Viaggio viaggio) { if (viaggio.PromoImage.Id != 0 && viaggio.Agenzia.Id != 0) { SaveAllegato(viaggio.PromoImage, () => { return getPromoImageFolder(viaggio.Agenzia); }); } else { string msg = string.Format("Impossibile salvare l'immagine promozionale del viaggio {0} in quanto il viaggio non è ancora stato salvato o non è associato ad un'agenzia.", viaggio); logger.Warn(msg); throw new Exception(msg); } }
private void SaveDepliant(Viaggio viaggio) { if (viaggio.Depliant.Id != 0 && viaggio.Agenzia.Id != 0) { SaveAllegato(viaggio.Depliant, () => { return getDepliantFolder(viaggio.Agenzia); }); } else { string msg = string.Format("Impossibile salvare il depliant del viaggio {0} in quanto il viaggio non è ancora stato salvato o non è associato ad un'agenzia.", viaggio); logger.Warn(msg); throw new Exception(msg); } }
private void DeleteAllegato(Viaggio viaggio, AllegatoViaggio targetAllegato) { using (var om = new OperationManager()) { try { var session = om.BeginOperation(); var fullImgPath = targetAllegato.FullName; System.IO.File.Delete(fullImgPath); vr.Save(viaggio); vr.deleteAllegato(targetAllegato); om.CommitOperation(); } catch (Exception ex) { om.RollbackOperation(); string msg = String.Format("Impossibile eliminare l'allegato {0}", targetAllegato.Id); logger.ErrorException(msg, ex); throw new Exception(msg, ex); } } }
private int CalcolaDistanzaPercorsa(Viaggio viaggio) { try { var firstPickupPoint = viaggio.Tappe .Where(t => t.Tipo == TipoTappa.PICK_UP_POINT) .OrderBy(t => t.Ordinamento) .FirstOrDefault(); string origine = string.Format("{0},{1}", firstPickupPoint.Location.Lat, firstPickupPoint.Location.Lng); string destinazione = viaggio.Tappe .Where(t => t.Tipo == TipoTappa.DESTINAZIONE) .Select(t => string.Format("{0},{1}", t.Location.Lat, t.Location.Lng)) .SingleOrDefault(); var req = new Xlns.Google.Maps.Directions.Request(origine, destinazione); req.Waypoints = new List<String>(); viaggio.Tappe .Where(t => t.Tipo == TipoTappa.PICK_UP_POINT && t.Id != firstPickupPoint.Id) .ForEach(t => req.Waypoints.Add( String.Format("{0},{1}", t.Location.Lat, t.Location.Lng)) ); var svcHelper = new Xlns.Google.Maps.Directions.Services(); var distanza = svcHelper.CalcolaDistanzaPercorsa(req); logger.Info("La distanza percorsa per il viaggio {0} è stimata in {1} km", viaggio, distanza); return distanza; } catch (Exception ex) { string msg = String.Format("Impossibile calcolare la distanza percorsa per il viaggio {0}", viaggio); logger.ErrorException(msg, ex); throw new Exception(msg, ex); } }
public void Save(Viaggio viaggio) { using (var om = new OperationManager()) { try { var session = om.BeginOperation(); vr.Save(viaggio); // serve per valorizzare gli ID generati dal DB session.Flush(); if (viaggio.Depliant != null && viaggio.Depliant.RawFile != null) { SaveDepliant(viaggio); } if (viaggio.PromoImage != null && viaggio.PromoImage.RawFile != null) { SavePromoImage(viaggio); } om.CommitOperation(); logger.Info("Dati del viaggio {0} salvati con successo", viaggio); } catch (Exception ex) { om.RollbackOperation(); string msg = String.Format("Errore nel salvataggio del viaggio {0}", viaggio); logger.ErrorException(msg, ex); throw new Exception(msg, ex); } } }
public void RegistraPartecipazione(Viaggio viaggio, Utente utenteRichiedente) { try { Partecipazione richiestaPartecipazione = new Partecipazione() { Viaggio = viaggio, Utente = utenteRichiedente, DataRichiesta = DateTime.Now }; pr.Save(richiestaPartecipazione); logger.Info("L'azienda {0} ha registrato la sua partecipazione al viaggio {1}", utenteRichiedente.Agenzia, viaggio); } catch (Exception ex) { string msg = String.Format("Impossibile registrare la partecipazione al viaggio {0} da parte dell'agenzia {1}", viaggio, utenteRichiedente.Agenzia); logger.ErrorException(msg, ex); throw new Exception(msg, ex); } }
public void Pubblica(Viaggio viaggio) { try { var pickupPoint = viaggio.Tappe.Where(t => t.Tipo == TipoTappa.PICK_UP_POINT).FirstOrDefault(); var destinazione = viaggio.Tappe.Where(t => t.Tipo == TipoTappa.DESTINAZIONE).FirstOrDefault(); if (pickupPoint == null || destinazione == null) throw new NonPubblicabileException("Impossibile pubblicare un viaggio senza specificare almeno una partenza e la destinazione"); viaggio.DistanzaPercorsa = CalcolaDistanzaPercorsa(viaggio); viaggio.DataPubblicazione = DateTime.Now; vr.Save(viaggio); logger.Info("Il viaggio {0} è stato pubblicato", viaggio); } catch (NonPubblicabileException ex) { logger.WarnException("Impossibile pubblicare il viaggio", ex); throw; } catch (Exception ex) { string msg = "Impossibile pubblicare il viaggio " + viaggio; logger.ErrorException(msg, ex); throw new Exception(msg, ex); } }
public bool IsPubblicato(Viaggio viaggio) { return viaggio.DataPubblicazione.HasValue; }
public void Save(Viaggio viaggio) { base.update<Viaggio>(viaggio); }