Exemplo n.º 1
0
        public bool Slobodan(Termini t, String soba, Klijent k)
        {
            ISession s = DataLayer.GetSession();

            Termini termin = GetTermini(t.Id);
            Smestaj sm     = s.Query <Termini>()
                             .Where(v => v.Id == termin.Id)
                             .Select(p => p.VezanZaSmestaj).FirstOrDefault();

            KlijentProvider klijentProv = new KlijentProvider();

            Klijent klijent = s.Query <Klijent>()
                              .Where(v => v.Username.Equals(k.Username))
                              .Select(p => p).FirstOrDefault();
            RezervacijaProvider rezervacijaProv = new RezervacijaProvider();

            Rezervacija rezervacija = new Rezervacija();

            rezervacija.KlijentR = klijent;
            rezervacija.SmestajR = sm;
            rezervacija.TerminiR = t;
            rezervacija.Soba     = soba;

            //postoji smestaj onda trebamo ispitati da li je termin slobodan
            if (soba.Equals("cetvorokrevetna"))
            {
                //update termine
                if (termin.BrCetvorokrevetnih > 0)
                {
                    s.Query <Termini>()
                    .Where(v => v.Id == t.Id)
                    .UpdateBuilder()
                    .Set(c => c.BrCetvorokrevetnih, c => c.BrCetvorokrevetnih - 1)
                    .Update();

                    if (t.Od.Month - DateTime.Now.Month > 2 && t.Od.Month - DateTime.Now.Month < 6)
                    {
                        klijentProv.Mail(klijent, "Rezervisan je traženi smeštaj-" + sm.Naziv + ". Cena smeštaja iznosi " + sm.CenaPoKrevetu * 1.4 * 120 + "din. Ukoliko se odlučite za naš prevoz, cena po osobi je " + sm.CenaPrevoza * 120 + "din");
                    }
                    else
                    {
                        klijentProv.Mail(klijent, "Rezervisan je traženi smeštaj-" + sm.Naziv + ". Početna cena smeštaja iznosi " + sm.CenaPoKrevetu * 1.4 * 120 + "din dok je cena sa popustom " + sm.CenaPoKrevetu * 1.4 * 120 * 0.8 + "din. Ukoliko se odlučite za nas prevoz, cena po osobi je " + sm.CenaPrevoza * 120 + "din");
                    }
                }
                else
                {
                    rezervacija.Cekanje = "da";
                    rezervacijaProv.AddRezervacija(rezervacija);
                    //smestimo klijenta u red
                    klijentProv.Mail(klijent, "Nažalost traženi smeštaj " + sm.Naziv + " je zauzet. Ukoliko se, oslobodi bićete obavešteni");
                    return(false);
                }
            }
            else if (soba.Equals("trokrevetna"))
            {
                if (termin.BrTrokrevetnih > 0)
                {
                    s.Query <Termini>()
                    .Where(v => v.Id == t.Id)
                    .UpdateBuilder()
                    .Set(c => c.BrTrokrevetnih, c => c.BrTrokrevetnih - 1)
                    .Update();
                    if (t.Od.Month - DateTime.Now.Month > 2 && t.Od.Month - DateTime.Now.Month < 6)
                    {
                        klijentProv.Mail(klijent, "Rezervisan je traženi smeštaj-" + sm.Naziv + ". Cena smeštaja iznosi " + sm.CenaPoKrevetu * 1.3 * 120 + "din. Ukoliko se odlučite za naš prevoz, cena po osobi je " + sm.CenaPrevoza * 120 + "din");
                    }
                    else
                    {
                        klijentProv.Mail(klijent, "Rezervisan je traženi smeštaj-" + sm.Naziv + ". Cena smeštaja iznosi " + sm.CenaPoKrevetu * 1.3 * 120 + "din dok je cena sa popustom " + sm.CenaPoKrevetu * 1.3 * 120 * 0.8 + "din. Ukoliko se odlučite za naš prevoz, cena po osobi je " + sm.CenaPrevoza * 120 + "din");
                    }
                }
                else
                {
                    rezervacija.Cekanje = "da";
                    klijentProv.Mail(klijent, "Nažalost traženi smeštaj " + sm.Naziv + " je zauzet. Ukoliko se oslobodi, bićete obavešteni");
                    rezervacijaProv.AddRezervacija(rezervacija);
                    return(false);
                }
            }
            else if (soba.Equals("duplex"))
            {
                if (termin.BrDuplex > 0)
                {
                    s.Query <Termini>()
                    .Where(v => v.Id == t.Id)
                    .UpdateBuilder()
                    .Set(c => c.BrDuplex, c => c.BrDuplex - 1)
                    .Update();

                    if (t.Od.Month - DateTime.Now.Month > 2 && t.Od.Month - DateTime.Now.Month < 6)
                    {
                        klijentProv.Mail(klijent, "Rezervisan je trazeni smestaj-" + sm.Naziv + ". Cena smestaja iznosi " + sm.CenaPoKrevetu * 1.5 * 120 + "din. Ukoliko se odlucite za nas prevoz cena po osobi je " + sm.CenaPrevoza * 120 + "din");
                    }
                    else
                    {
                        klijentProv.Mail(klijent, "Rezervisan je trazeni smestaj-" + sm.Naziv + ". Pocetna cena smestaja iznosi " + sm.CenaPoKrevetu * 1.5 * 120 + "din dok je cena sa popustom" + sm.CenaPoKrevetu * 1.5 * 120 * 0.8 + "din . Ukoliko se odlucite za nas prevoz cena po osobi je " + sm.CenaPrevoza * 120 + "din");
                    }
                }
                else
                {
                    rezervacija.Cekanje = "da";
                    klijentProv.Mail(klijent, "Nazalost trazeni smestaj " + sm.Naziv + " je zauzet. Ukoliko se oslobodi bicete obavesteni");
                    rezervacijaProv.AddRezervacija(rezervacija);
                    return(false);
                }
            }

            rezervacijaProv.AddRezervacija(rezervacija);

            return(true);
        }
Exemplo n.º 2
0
        public bool Otkazi(Termini t, String soba, Klijent k)
        {
            ISession s = DataLayer.GetSession();

            Klijent klijent = s.Query <Klijent>()
                              .Where(v => v.Username.Equals(k.Username))
                              .Select(p => p).FirstOrDefault();

            Termini termin = GetTermini(t.Id);

            Smestaj sm = s.Query <Termini>()
                         .Where(v => v.Id == termin.Id)
                         .Select(p => p.VezanZaSmestaj).FirstOrDefault();

            Rezervacija rez = s.Query <Rezervacija>()
                              .Where(v => v.KlijentR.Id == klijent.Id && v.SmestajR == sm)
                              .Select(p => p).FirstOrDefault();

            if (sm == null || rez == null)
            {
                return(false); // greska
            }

            RezervacijaProvider rezervacijaProv = new RezervacijaProvider();
            KlijentProvider     klijentProv     = new KlijentProvider();

            klijentProv.Mail(klijent, "Uspesno otkazana rezervacija letevonja-" + sm.Naziv);
            if (soba.Equals("cetvorokrevetna"))
            {
                s.Query <Termini>()
                .Where(v => v.Id == t.Id)
                .UpdateBuilder()
                .Set(c => c.BrCetvorokrevetnih, c => c.BrCetvorokrevetnih + 1)
                .Update();
            }
            else if (soba.Equals("trokrevetna"))
            {
                s.Query <Termini>()
                .Where(v => v.Id == t.Id)
                .UpdateBuilder()
                .Set(c => c.BrTrokrevetnih, c => c.BrTrokrevetnih + 1)
                .Update();
            }
            else if (soba.Equals("duplex"))
            {
                s.Query <Termini>()
                .Where(v => v.Id == t.Id)
                .UpdateBuilder()
                .Set(c => c.BrDuplex, c => c.BrDuplex + 1)
                .Update();
            }
            else
            {
                return(false);
            }

            //ObrisiRezervaciju

            RezervacijaProvider r = new RezervacijaProvider();

            r.RemoveRezervacija(rez.Id);
            PosaljiPonuduKlijentima(sm, soba, sm.Naziv);
            return(true);
        }