Beispiel #1
0
 public static string GetDisplayName(this IProjet proj)
 {
     return(proj.GetProjectTitle() + " pendant " + proj.GetDuree().ToString());
 }
Beispiel #2
0
        /// <summary>
        /// Affiche {depart -> paysArrivé} le {date} pendant {nbjours} jours
        /// </summary>
        /// <param name="proj"></param>
        /// <returns></returns>
        public static string GetLongDisplayName(this IProjet proj)
        {
            string villedep = (!string.IsNullOrEmpty(proj.VilleDepart)) ? proj.VilleDepart + " -> " : "";
            string dest     = villedep + proj.PaysArrive.LibellePays;

            if (!proj.Incertain)
            {
                return(dest + " le " + proj.DateDebut.Value.ToShortDateString() + " pendant " + proj.GetDuree());
            }
            else
            {
                return(dest + " pendant " + proj.NbJours + " jours");
            }
        }
        public ActionResult Create(ProjetViewData projetData, ResidenceViewData residenceData, TransportViewData transportData)
        {
            /*
             * projetData = new ProjetViewData
             * {
             *  commentaires = "Projet qui me tien à coeur",
             *  villeArrive = "Paris",
             *  dateDebut = "22/08/09",
             *  dateFin = "25/12/09",
             *  heureDepart = "22h32",
             *  paysArrive = "25",
             *  paysDepart = "77"
             * };
             * residenceData = new ResidenceViewData
             * {
             *  adresse = "14 rue des longchamps 91650 breux",
             *  maxhotes = "23",
             *  prixres = "32.54",
             *  typeres = "chez moi"
             * };
             *
             * transportData = new TransportViewData
             * {
             *  numvol = "B5464",
             *  modetrans = "Avion",
             *  prixtrans = "43.54",
             *  details = null
             * };
             *
             */
            DateTime datedeb, datefin;
            DateTime?vDateDeb = null, vDateFin = null;
            int      paysarr, paysdep;
            int      maxhotes = -1;
            double   prixres = 0d, prixtrans = 0d;
            bool     incertain;
            int      nbJours = -1;

            projetData.incertain = (!string.IsNullOrEmpty(projetData.incertain)) ? projetData.incertain : bool.FalseString;
            incertain            = bool.Parse(projetData.incertain);
            if (!incertain)
            {
                if (DateTime.TryParse(projetData.dateDebut, out datedeb) == false)
                {
                    this.ModelState.AddModelError("dateDebut", "La date de départ est incorecte");
                }
                else if (datedeb.Year >= DateTime.Now.Year + 2)
                {
                    this.ModelState.AddModelError("dateDebut", "La date de départ doit se situer dans les 2 prochaines années");
                }
                else if (datedeb <= DateTime.Now)
                {
                    this.ModelState.AddModelError("dateDebut", "La date de départ souhaitée est déjà dépassée");
                }

                if (DateTime.TryParse(projetData.dateFin, out datefin) == false)
                {
                    this.ModelState.AddModelError("dateFin", "La date de retour prevue est incorecte");
                }
                else if (datefin.Year >= DateTime.Now.Year + 2)
                {
                    this.ModelState.AddModelError("dateFin", "La date de retour doit se situer dans les 2 prochaines années");
                }
                else if (datefin <= DateTime.Now)
                {
                    this.ModelState.AddModelError("dateFin", "La date de retour est déjà dépassée");
                }
                else if (datefin < datedeb.AddDays(1))
                {
                    this.ModelState.AddModelError("dateFin", "La date de retour doit être au moins 1 jour apres la date de départ");
                }

                vDateDeb = datedeb;
                vDateFin = datefin;
            }
            else
            {
                if (!int.TryParse(projetData.nbjours, out nbJours))
                {
                    this.ModelState.AddModelError("nbjours", "La duree du voyage est incorrecte");
                }
                else if (nbJours < 1)
                {
                    this.ModelState.AddModelError("nbjours", "Le voyage doit durer au minimum 1 jour");
                }
                else if (nbJours >= (365 * 2))
                {
                    this.ModelState.AddModelError("nbjours", "Le voyage doit durer maximum 2 ans ");
                }
            }

            if (int.TryParse(projetData.paysArrive, out paysarr) == false)
            {
                this.ModelState.AddModelError("paysArrive", "Le pays de destination selectionné est incorecte");
            }

            if (int.TryParse(projetData.paysDepart, out paysdep) == false)
            {
                this.ModelState.AddModelError("paysDepart", "Le pays de départ selectionné est incorecte");
            }

            if (incertain /*bool.Parse(projetData.incertain) */ && projetData.dateDebut.Trim() != "" && projetData.dateFin.Trim() != "" && int.TryParse(projetData.nbjours, out nbJours))
            {
                this.ModelState.AddModelError("nbjours", "Vous devez spécifier une durée en nombre de jour si vous ne pouvez indiquer de dates précises");
            }

            if (projetData.dateDebut.Trim() != "" && projetData.dateFin.Trim() != "" && incertain == true && !int.TryParse(projetData.nbjours, out nbJours))
            {
                this.ModelState.AddModelError("_FORM", "Vous devez spécifier une durée en nombre de jour ou des dates précises");
            }

            //Convertion des "." en virgule
            //FIXME: CREERPROJET Plante si plusieurs "." ou "," dans le prixres trans
            residenceData.prixres   = residenceData.prixres.Replace(".", ",").Trim();
            transportData.prixtrans = transportData.prixtrans.Replace(".", ",").Trim();



            if (residenceData.prixres != "" && double.TryParse(residenceData.prixres, out prixres) == false)
            {
                this.ModelState.AddModelError("prixres", "Le prix indiqué est incorrecte");
            }

            if (transportData.prixtrans != "" && double.TryParse(transportData.prixtrans, out prixtrans) == false)
            {
                this.ModelState.AddModelError("prixtrans", "Le prix indiqué est incorrecte");
            }


            if (residenceData.typeres.ToUpper() == "CHEZ MOI" || residenceData.typeres.ToUpper() == "AMIS")
            {
                residenceData.maxhotes = residenceData.maxhotes.Trim();
                if (residenceData.maxhotes != "" && int.TryParse(residenceData.maxhotes, out maxhotes) == false)
                {
                    this.ModelState.AddModelError("maxhotes", "Nombre d'hotes maximum incorrecte");
                }
            }



            if (this.ModelState.IsValid)
            {
                IProjet    proj  = Data.ProjetDataAccess.Create();
                IResidence res   = Data.ResidenceDataAccess.CreateResidence();
                ITransport trans = Data.TransportDataAccess.CreateTransport();

                proj.DateCreation     = DateTime.Now;
                proj.DateModification = proj.DateCreation;
                proj.Incertain        = incertain;
                if (!incertain)
                {
                    proj.DateDebut = vDateDeb;
                    proj.DateFin   = vDateFin;
                    proj.NbJours   = (int)proj.GetDuree().timeSpan.TotalDays;
                }
                else
                {
                    proj.DateDebut = null;
                    proj.DateFin   = null;
                    proj.NbJours   = nbJours;
                }

                proj.IdPaysDepart = paysdep;
                proj.IdPaysArrive = paysarr;
                proj.Commentaires = projetData.commentaires.Trim();
                proj.OwnerUserId  = this.CurrentUser.UserId;



                proj.VilleArrive = projetData.villeArrive.Trim().ToTitleCase();



                if (GotResidence(residenceData.typeres))
                {
                    res.Prix    = prixres;//double.Parse(residenceData.prixres.Trim());
                    res.Type    = residenceData.typeres.Trim().ToUpper();
                    res.Adresse = residenceData.adresse.Trim();


                    if (res.Type == "CHEZ MOI" || res.Type == "AMIS")
                    {
                        res.MaxHotes = maxhotes;
                    }
                    proj.Residence = res;
                }
                if (GotTransport(transportData.modetrans))
                {
                    trans.ModeTransport = transportData.modetrans.Trim().ToUpper();

                    //TODO: ajpouter details du transport dans la vue. Modale??
                    trans.Details = transportData.details ?? "";
                    trans.PrixAR  = prixtrans;

                    if (trans.ModeTransport == "AVION")
                    {
                        trans.Compagnie = transportData.compagnie; //?? null;
                        trans.NumVol    = transportData.numvol;    //?? null;
                    }
                    proj.TransportsEntitySet.Add((cov_Transport)trans);
                }


                try
                {
                    Data.ProjetDataAccess.InsertProjet(proj);
                }
                catch (Exception ex)
                {
                    string errmsg = "Votre projet de voyage n'a pas pu être enregistré.";
                    //"Une erreur est survenue lors de l'envoi de l'email de confirmation. Si le probleme persiste veillez contacter " + Configuration.SiteAdminEmail + ".";

                    //TODO:REDIRECT TO ACTION
                    return(Error(errmsg));
                }

                return(RedirectToAction("CreateSuccess", new { IdProjet = proj.IdProjet }));
            }
            return(View());
        }
Beispiel #4
0
 /// <summary>
 /// Retourne DateDebut.ToShortDateString() ou GetDuree().ToString() si null
 /// </summary>
 /// <param name="proj"></param>
 /// <returns></returns>
 public static string GetShortDateStringOrDuration(this IProjet proj)
 {
     return((proj.DateDebut.HasValue) ? proj.DateDebut.Value.ToShortDateString() : proj.GetDuree().ToString());
 }
        private IProjet UpdateProjet(CreateProjetViewData newDataProjet)
        {
            // DateTime datedeb, datefin;



            DateTime?vDateDeb = null, vDateFin = null;

            int    maxhotes = newDataProjet.maxhotes ?? -1;
            double prixres = 0d, prixtrans = 0d;
            bool   incertain;
            int    nbJours = -1;

            //  newDataProjet.incertain = (!string.IsNullOrEmpty(newDataProjet.incertain)) ? newDataProjet.incertain : bool.FalseString;
            incertain = newDataProjet.incertain;

            if (newDataProjet.projetid == null)
            {
                throw new Exception("Le projet à éditer est introuvable");
            }

            int     projetId = newDataProjet.projetid.Value;
            IProjet proj     = Data.ProjetDataAccess.GetProjet(projetId);

            if (proj == null)
            {
                throw new Exception("Le projet à éditer est introuvable");
            }

            if (proj.OwnerUserId != this.CurrentUserId)
            {
                throw new Exception(this.CurrentUserId.ToString() + " n'est pas le propriétaire de ce projet et ne peut pas le modifier");
            }


            IResidence res   = null;
            ITransport trans = null;

            if (GotResidence(newDataProjet.typeres))
            {
                res = Data.ResidenceDataAccess.CreateResidence();
            }

            if (GotTransport(newDataProjet.modetrans))
            {
                trans = Data.TransportDataAccess.CreateTransport();
            }

            //using(TransactionScope transx = new TransactionScope())
            //{
            proj.DateModification = DateTime.Now;

            proj.Incertain = incertain;
            if (!incertain)
            {
                vDateDeb = newDataProjet.dateDebut;
                vDateFin = newDataProjet.dateFin;

                proj.DateDebut = vDateDeb;
                proj.DateFin   = vDateFin;
                proj.NbJours   = (int)proj.GetDuree().timeSpan.TotalDays;
            }
            else
            {
                //   nbJours =
                proj.DateDebut = null;
                proj.DateFin   = null;
                proj.NbJours   = newDataProjet.nbjours.Value;
            }


            proj.Commentaires = newDataProjet.commentaires.Trim();


            //   proj.OwnerUserId = this.CurrentUser.UserId;

            //remove residence
            if (res == null)
            {
                if (proj.Residence != null)
                {
                    // int resId = proj.Residence.Id;
                    //  proj.Residence = null;
                    //  Data.CovCakeDataContext.SubmitChanges();

                    //  Data.ProjetDataAccess.SubmitChanges();
                    //  Data.ResidenceDataAccess.Remove(resId);
                    Data.ResidenceDataAccess.Remove(proj.Residence.Id);
                }
            }
            else
            {
                res.Prix    = newDataProjet.prixres ?? 0;//double.Parse(residenceData.prixres.Trim());
                res.Type    = newDataProjet.typeres.Trim().ToUpper();
                res.Adresse = newDataProjet.adresse.Trim();
                if (res.Type == "CHEZ MOI" || res.Type == "AMIS")
                {
                    res.MaxHotes = maxhotes;
                }
                proj.Residence = res;
            }

            if (trans == null)
            {
                //  Data.TransportDataAccess.Remove(proj.Transports.FirstOrDefault().IdTransport);
                proj.TransportsEntitySet.Clear();
            }
            else
            {
                proj.TransportsEntitySet.Clear();

                trans.ModeTransport = newDataProjet.modetrans.Trim().ToUpper();

                trans.Details = newDataProjet.details ?? "";
                trans.PrixAR  = newDataProjet.prixtrans ?? 0;  //prixtrans;

                if (trans.ModeTransport == "AVION")            // || trans.ModeTransport.Trim() == "
                {
                    trans.Compagnie = newDataProjet.compagnie; //?? null;
                    trans.NumVol    = newDataProjet.numvol;    //?? null;
                }

                proj.TransportsEntitySet.Add((cov_Transport)trans);
            }
            //  Data.ProjetDataAccess.SubmitChanges();

            //  transx.Complete();
            return(proj);
            // }
        }