Example #1
0
 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);
 }
Example #2
0
 public Viaggio CreaNuovoViaggio()
 {
     var viaggio = new Viaggio()
     {
         DataPartenza = DateTime.Today.AddDays(1),
         DataChiusuraPrenotazioni = DateTime.Today
     };
     return viaggio;
 }
Example #3
0
 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;
     }
 }
Example #4
0
 public ActionResult ViaggioTiledDetail(Viaggio viaggio)
 {
     return PartialView(viaggio);
 }
Example #5
0
        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 });
        }
Example #6
0
 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);
     }
 }
Example #7
0
 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);
     }
 }
Example #8
0
 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);
         }
     }
 }
Example #9
0
        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);
            }
        }
Example #10
0
 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);
         }
     }
 }
Example #11
0
 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);
     }
 }
Example #12
0
 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);
     }
 }
Example #13
0
 public bool IsPubblicato(Viaggio viaggio)
 {
     return viaggio.DataPubblicazione.HasValue;
 }
Example #14
0
 public void Save(Viaggio viaggio)
 {
     base.update<Viaggio>(viaggio);
 }