public Ocena ObliczSredniaOceneFirmy(Firma firma)
 {
     if (firma == null) throw new BrakFirmy();
     if (firma.oceny == null) throw new BrakOcen();
     if (firma.oceny.Count == 0) throw new BrakOcen();
     if (firma.oceny.Count == 1) return firma.oceny.ElementAt(0);
     else
     {
         Ocena ocena = new Ocena();
         foreach (var q in firma.oceny)
         {
             ocena.atmosera += q.atmosera;
             ocena.czas_swiadczenia_uslug += q.czas_swiadczenia_uslug;
             ocena.kontakt_z_przelozonymi += q.kontakt_z_przelozonymi;
             ocena.lokalizacja += q.lokalizacja;
             ocena.poziom_obslugi += q.poziom_obslugi;
             ocena.poziom_swiadczonej_uslugi += q.poziom_swiadczonej_uslugi;
             ocena.wyglad_firmy += q.wyglad_firmy;
             ocena.wyposazenie += q.wyposazenie;
             ocena.zarobki += q.zarobki;
         }
         ocena.atmosera = ocena.atmosera / firma.oceny.Count;
         ocena.czas_swiadczenia_uslug = ocena.czas_swiadczenia_uslug / firma.oceny.Count;
         ocena.kontakt_z_przelozonymi = ocena.kontakt_z_przelozonymi / firma.oceny.Count;
         ocena.lokalizacja = ocena.lokalizacja / firma.oceny.Count;
         ocena.poziom_obslugi = ocena.poziom_obslugi / firma.oceny.Count;
         ocena.poziom_swiadczonej_uslugi = ocena.poziom_swiadczonej_uslugi / firma.oceny.Count;
         ocena.wyglad_firmy = ocena.wyglad_firmy / firma.oceny.Count;
         ocena.wyposazenie = ocena.wyposazenie / firma.oceny.Count;
         ocena.zarobki = ocena.zarobki / firma.oceny.Count;
         return ocena;
     }
 }
        public EdytujFirmaVM(Firma firma)
        {
            this.nazwa = firma.nazwa;
            this.zdjecie = firma.zdjecie;

            if (firma.adres != null)
            {
                this.miasto = firma.adres.miasto;
                this.ulica = firma.adres.ulica;
                this.numer_budynku = firma.adres.numer_budynku;
                this.numer_lokalu = firma.adres.numer_lokalu;
            }
            if (firma.kontakt != null)
            {
                this.numer_komurkowy = firma.kontakt.numer_komurkowy;
                this.mail = firma.kontakt.mail;
            }
        }
 public FirmaVM(Firma firma)
 {
     try
     {
         id_firmy = firma.id;
         nazwa_firmy = firma.nazwa;
         zdjecie_firmy = firma.zdjecie;
         adres_firmy =
             firma.adres.miasto + " " +
             firma.adres.ulica + " " +
             firma.adres.numer_budynku + "/" +
             firma.adres.numer_lokalu;
         email_firmy = firma.kontakt.mail;
         telefon_firmy = firma.kontakt.numer_komurkowy;
     }
     catch (Exception e)
     {
         Debug.WriteLine(e);
     }
 }
        public FirmaZSredniaOcenaVM(Firma firma, Ocena srednia_ocena)
            : base(firma)
        {
            try
            {
                wykres = new Chart(400, 250)
                .AddTitle("srednia ocen")
                .AddSeries(name: "wyglad firmy", yValues: new[] { srednia_ocena.wyglad_firmy })
                .AddSeries(name: "poziom obslugi", yValues: new[] { srednia_ocena.poziom_obslugi })
                .AddSeries(name: "czas świadczenia usług", yValues: new[] { srednia_ocena.czas_swiadczenia_uslug })
                .AddSeries(name: "lokalizacja", yValues: new[] { srednia_ocena.lokalizacja })
                .AddSeries(name: "poziom świadczonej usługi", yValues: new[] { srednia_ocena.poziom_swiadczonej_uslugi })
                .AddSeries(name: "atmosfera", yValues: new[] { srednia_ocena.atmosera })
                .AddSeries(name: "zarobki", yValues: new[] { srednia_ocena.zarobki })
                .AddSeries(name: "kontakt z przełożonym", yValues: new[] { srednia_ocena.kontakt_z_przelozonymi })
                .AddSeries(name: "wyposażenie", yValues: new[] { srednia_ocena.wyposazenie });

            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }
        }
 public FirmaZRankingiemVM(Firma firma, string ranking)
     : base(firma)
 {
     this.ranking = ranking;
 }
 public FirmaZRankingiemVM(Firma firma, double ranking)
     : base(firma)
 {
     this.ranking = ranking.ToString("{0.00}");
 }
 public void FirmaZostalaUtworzona(Firma firma)
 {
     mail.FirmaZostalaUtworzona(firma);
     hub.Clients.All.GetMessage("w servisie pojawiła się nowa firma " + firma.nazwa);
 }
        public IEnumerable<Komentarz> PobierzNajlepszeKomentarzeFirmy(Firma firma)
        {
            if (firma.komentarze == null) return new List<Komentarz>();

            return firma.komentarze.OrderBy(n => n.ocena);
        }
 public double ObliczRankingFirmy(Firma firma)
 {
     Ocena ocena = ObliczSredniaOceneFirmy(firma);
     return Srednia(ocena);
 }
 public void EdytujFirmeUzytkownika(Firma firma)
 {
     dane.Firmy.Popraw(firma);
 }
        public Firma ZarejestrujFirmeUzytkownika(Uzytkownik uzytkownik, Firma firma)
        {
            if (uzytkownik == null) throw new BrakUzytkownika();
            if (firma == null) throw new BrakFirmy();
            if (uzytkownik.firma != null) throw new UzytkownikDodajeDrugaFirme();
            uzytkownik.firma = firma;
            firma.wlasciciel = uzytkownik;

            dane.Firmy.Zapisz(firma);
            message.FirmaZostalaUtworzona(firma);

            return dane.Firmy.Wczytaj().Last();
        }
 public Firma ZarejestrujFirmeUzytkownika(string id_uzytkownik, Firma firma)
 {
     return ZarejestrujFirmeUzytkownika(dane.Uzytkownicy.Wczytaj().FirstOrDefault(n => n.Id == id_uzytkownik), firma);
 }
        public Ocena WystawOceneFirmie(Uzytkownik uzytkownik, Firma firma, Ocena ocena)
        {
            if (uzytkownik == null) throw new BrakUzytkownika();
            if (ocena == null) throw new BrakOceny();
            if (firma == null) throw new BrakFirmy();
            if (firma.komentarze.Count(n => n.wlasciciel.Id == uzytkownik.Id) > 0) throw new UzytkownikOceniaFirmePoRazDrugi();
            if (firma.wlasciciel.Id == uzytkownik.Id) throw new UzytkownikOceniaWlasnaFirme();
            if (firma.oceny == null) firma.oceny = new List<Ocena>();
            if (uzytkownik.oceny_firm == null) uzytkownik.oceny_firm = new List<Ocena>();

            firma.oceny.Add(ocena);
            uzytkownik.oceny_firm.Add(ocena);
            ocena.firma = firma;
            ocena.uzytkownik = uzytkownik;

            dane.Firmy.Popraw(firma);
            message.TwojFirmaZostalaOceniona(firma.wlasciciel);

            return dane.Oceny.Wczytaj().Last();
        }
        public Komentarz WystawKomentarzFirmie(Uzytkownik uzytkownik, Firma firma, Komentarz komentarz)
        {
            if (uzytkownik == null) throw new BrakUzytkownika();
            if (firma == null) throw new BrakFirmy();
            if (komentarz == null) throw new BrakKomentarza();
            //if (uzytkownik.wystawione_komentarze.Count(n => n.firma.id == firma.id) > 0) throw new UzytkownikDodajeDrugiKomentarz();
            if (firma.wlasciciel.Id == uzytkownik.Id) throw new UzytkownikKomentujeWlasnaFirme();

            if (uzytkownik.wystawione_komentarze == null) uzytkownik.wystawione_komentarze = new List<Komentarz>();
            if (firma.komentarze == null) firma.komentarze = new List<Komentarz>();

            uzytkownik.wystawione_komentarze.Add(komentarz);
            firma.komentarze.Add(komentarz);
            komentarz.wlasciciel = uzytkownik;
            komentarz.firma = firma;

            dane.Firmy.Popraw(firma);
            message.TwojaFirmaZostalaZakomentowana(firma.wlasciciel, komentarz.tresc);

            return dane.Komentarze.Wczytaj().Last();
        }
 public IEnumerable<Komentarz> PobierzNajlepszeKomentarzeFirmyWedlogPaczki(Firma firma, int paczka)
 {
     return firma.komentarze.OrderBy(n => n.ocena);
 }
 public OcenaFirmyVM(Firma firma)
     : base(firma)
 {
 }
        internal Firma SwtorzFirme(HttpServerUtilityBase server, HttpPostedFileBase uploadFile)
        {
            string url = string.Empty;
            if (uploadFile != null && uploadFile.FileName != string.Empty)
            {
                url = Path.Combine(server.MapPath("~/Images/firmy"), uploadFile.FileName);
                uploadFile.SaveAs(url);
                url = Path.Combine("../Images/firmy", uploadFile.FileName);
            }

            Firma firma = new Firma
            {
                nazwa = nazwa,
                zdjecie = url,
                adres = new Adres
                {
                    ulica = ulica,
                    numer_budynku = numer_budynku,
                    numer_lokalu = numer_lokalu,
                },
                kontakt = new Kontakt
                {
                    mail = mail,
                    numer_komurkowy = numer_komurkowy
                },
            };

            return firma;
        }
 public FirmaZSzczegolamiVM(Firma firma, Ocena srednia_ocena, IEnumerable<Komentarz> komentarze)
     : base(firma, srednia_ocena)
 {
     this.komentarze = komentarze.Select(
         n => new KomentarzVM(n));
 }