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 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 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 Ocena WystawOceneFirmie(string id_uzytkownik, int id_firma, Ocena ocena)
 {
     return WystawOceneFirmie(dane.Uzytkownicy.Wczytaj().FirstOrDefault(n => n.Id == id_uzytkownik), dane.Firmy.Wczytaj().FirstOrDefault(n => n.id == id_firma), ocena);
 }
 public double Srednia(Ocena ocena)
 {
     double srednia;
     srednia = ocena.atmosera + ocena.czas_swiadczenia_uslug + ocena.kontakt_z_przelozonymi + ocena.lokalizacja + ocena.poziom_obslugi + ocena.poziom_swiadczonej_uslugi + ocena.wyglad_firmy + ocena.wyposazenie + ocena.zarobki / 9;
     return srednia;
 }
 public FirmaZSzczegolamiVM(Firma firma, Ocena srednia_ocena, IEnumerable<Komentarz> komentarze)
     : base(firma, srednia_ocena)
 {
     this.komentarze = komentarze.Select(
         n => new KomentarzVM(n));
 }