Example #1
0
        public async Task <IHttpActionResult> saveTeplates(Zgrade zgrada)
        {
            try
            {
                var identity  = (ClaimsIdentity)User.Identity;
                var companyId = Convert.ToInt32(identity.FindFirstValue("Cid"));
                var target    = await _db.Zgrade.FirstOrDefaultAsync(p => p.Id == zgrada.Id);

                if (target.CompanyId != companyId)
                {
                    return(InternalServerError());
                }
                // napomena za racun - zgrada level
                target.NapomenaRacun = zgrada.NapomenaRacun;

                // opis za racun - master level
                foreach (var master in zgrada.Zgrade_PosebniDijeloviMaster)
                {
                    var dbMaster = await _db.Zgrade_PosebniDijeloviMaster.FirstOrDefaultAsync(p => p.Id == master.Id);

                    dbMaster.OpisRacun = master.OpisRacun;
                }

                await _db.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError());
            }
        }
Example #2
0
        public void NoviKrugDrugiProlaz()
        {
            radnaMjesta = (long)Math.Min(Efekti[RadnaMjestaDelta] + radnaMjesta, Efekti[PopulacijaMax]);

            List <Zgrada.ZgradaInfo> zaUklonit = new List <Zgrada.ZgradaInfo>();

            foreach (Zgrada z in Zgrade.Values)
            {
                z.noviKrug(this, Igrac.efekti);
                if (!z.tip.ostaje)
                {
                    zaUklonit.Add(z.tip);
                }
            }

            foreach (var ukloni in zaUklonit)
            {
                Zgrade.Remove(ukloni);
            }

            inicijalizirajEfekte();
            izracunajEfekte();
            postaviEfekteIgracu();

            osvjeziRedGradnje();
        }
Example #3
0
        private void osvjeziRedGradnje()
        {
            for (LinkedListNode <Zgrada.ZgradaInfo> uGradnji = RedGradnje.First; uGradnji != null;)
            {
                Zgrada.ZgradaInfo zgradaTip = uGradnji.Value;
                long kolicina = 0;
                if (Zgrade.ContainsKey(zgradaTip))
                {
                    kolicina = Zgrade[zgradaTip].kolicina;
                }

                if (!zgradaTip.dostupna(Igrac.efekti, kolicina))
                {
                    if (zgradaTip.ponavljaSe)
                    {
                        Igrac.poruke.AddLast(Poruka.NovaZgrada(this, zgradaTip));
                    }
                    LinkedListNode <Zgrada.ZgradaInfo> slijedeci = uGradnji.Next;
                    RedGradnje.Remove(uGradnji);
                    uGradnji = slijedeci;
                }
                else
                {
                    uGradnji = uGradnji.Next;
                }
            }
        }
Example #4
0
        public async Task <IHttpActionResult> ZajednickiUredjajiCreateOrUpdate(Zgrade zgradaObj)
        {
            try
            {
                foreach (var item in zgradaObj.Zgrade_PopisUredjaja)
                {
                    switch (item.Status)
                    {
                    case "a":
                        _db.Zgrade_PopisUredjaja.Add(item);
                        break;

                    case "u":
                        _db.Zgrade_PopisUredjaja.Attach(item);
                        _db.Entry(item).State = EntityState.Modified;
                        break;
                    }
                }

                await _db.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex) { return(InternalServerError()); }
        }
Example #5
0
        public async Task <IHttpActionResult> ZgradaCreateOrUpdate(Zgrade zgrada)
        {
            try
            {
                var identity  = (ClaimsIdentity)User.Identity;
                var companyId = Convert.ToInt32(identity.FindFirstValue("Cid"));
                if (zgrada.Id == 0)
                {
                    zgrada.CompanyId = companyId;
                    _db.Zgrade.Add(zgrada);
                }
                else
                {
                    var target = await _db.Zgrade.FirstOrDefaultAsync(p => p.Id == zgrada.Id);

                    target.Mjesto    = zgrada.Mjesto;
                    target.Adresa    = zgrada.Adresa;
                    target.CompanyId = companyId;
                    target.Napomena  = zgrada.Napomena;
                    target.Naziv     = zgrada.Naziv;
                    target.IBAN      = zgrada.IBAN;
                    foreach (var item in zgrada.Zgrade_Stanari)
                    {
                        switch (item.Status)
                        {
                        case "a":
                            _db.Zgrade_Stanari.Add(item);
                            break;

                        case "u":
                            _db.Zgrade_Stanari.Attach(item);
                            _db.Entry(item).State = EntityState.Modified;
                            break;
                        }
                    }

                    // ovo se snima iz posebnih dijelova
                    //foreach (var item in zgrada.Zgrade_PosebniDijeloviMaster)
                    //{
                    //    switch (item.Status)
                    //    {
                    //        case "a":
                    //            _db.Zgrade_PosebniDijeloviMaster.Add(item);
                    //            break;
                    //        case "u":
                    //            _db.Zgrade_PosebniDijeloviMaster.Attach(item);
                    //            _db.Entry(item).State = EntityState.Modified;
                    //            break;
                    //    }
                    //}
                }
                await _db.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError());
            }
        }
Example #6
0
        public override List <Zgrada.ZgradaInfo> MoguceGraditi()
        {
            List <Zgrada.ZgradaInfo> popis = new List <Zgrada.ZgradaInfo>(Zgrada.VojneZgradeInfo);

            foreach (Zgrada.ZgradaInfo zi in Igrac.dizajnoviBrodova)
            {
                popis.Add(zi);
            }

            List <Zgrada.ZgradaInfo> ret = new List <Zgrada.ZgradaInfo>();

            foreach (Zgrada.ZgradaInfo z in popis)
            {
                long prisutnaKolicina = 0;
                if (Zgrade.ContainsKey(z))
                {
                    prisutnaKolicina = Zgrade[z].kolicina;
                }
                if (z.dostupna(Igrac.efekti, prisutnaKolicina))
                {
                    ret.Add(z);
                }
            }

            return(ret);
        }
Example #7
0
        public override List <Zgrada.ZgradaInfo> MoguceGraditi()
        {
            List <Zgrada.ZgradaInfo> ret = new List <Zgrada.ZgradaInfo>();

            foreach (Zgrada.ZgradaInfo z in Zgrada.CivilneZgradeInfo)
            {
                long prisutnaKolicina = 0;
                if (Zgrade.ContainsKey(z))
                {
                    prisutnaKolicina = Zgrade[z].kolicina;
                }
                if (z.dostupna(Igrac.efekti, prisutnaKolicina))
                {
                    ret.Add(z);
                }
            }

            return(ret);
        }
Example #8
0
        public async Task <ActionResult> CreateUplatnicaManually(int masterId, int godina, int mjesec, int zgradaId = 0)
        {
            try
            {
                var vlasniciPeriod = await _db.Zgrade_PosebniDijeloviMaster_VlasniciPeriod.FirstOrDefaultAsync(p => p.PosebniDioMasterId == masterId && p.Zatvoren != true);

                // period nije zatvoren!
                var vlasnici   = vlasniciPeriod.Zgrade_PosebniDijeloviMaster_VlasniciPeriod_Vlasnici.Where(p => p.VlasniciPeriodId == vlasniciPeriod.Id);
                var vlasnik    = vlasnici.FirstOrDefault(); // uzeo prvog
                var vlasnikObj = await _db.Zgrade_Stanari.FirstOrDefaultAsync(p => p.Id == vlasnik.StanarId);

                Platitelj = vlasnikObj.Ime + " " + vlasnikObj.Prezime;
                string PozivNaBroj = "987654321";
                var    god         = await _db.PrihodiRashodi.FirstOrDefaultAsync(p => p.Godina == godina);

                var mj = god.PrihodiRashodi_Rashodi.Where(p => p.Mjesec == mjesec && p.PosebniDioMasterId == masterId);
                Iznos = (decimal)mj.Where(p => p.PosebniDioMasterId == masterId).Sum(p => p.Iznos);
                var zgradaObj = await _db.Zgrade.FirstOrDefaultAsync(p => p.Id == zgradaId);

                _zgrada = zgradaObj;

                var identity  = (ClaimsIdentity)User.Identity;
                var companyId = Convert.ToInt32(identity.FindFirstValue("Cid"));
                var tvrtka    = await _db.Kompanije.FirstOrDefaultAsync(p => p.Id == companyId);

                _tvrtka = tvrtka;
                var newGuid = UplatnicaPdf(Opis, Platitelj, zgradaObj.Adresa, zgradaObj.Mjesto, tvrtka.IBAN, PozivNaBroj, Iznos);

                foreach (var item in mj)
                {
                    item.PdfFileName = newGuid;
                }
                await _db.SaveChangesAsync();

                return(Json(new { success = true }));
            }
            catch
            {
                return(Json(new { success = false }));
            }
        }
Example #9
0
        protected override void gradi(bool simulacija)
        {
            double pocetniPoeniGradnje = poeniIndustrije();
            double poeniGradnje        = pocetniPoeniGradnje;
            LinkedListNode <Zgrada.ZgradaInfo> uGradnji = RedGradnje.First;

            Dictionary <string, double> ostatakGradnje;

            if (simulacija)
            {
                ostatakGradnje = new Dictionary <string, double>(this.ostatakGradnje);
            }
            else
            {
                ostatakGradnje = this.ostatakGradnje;
            }

            while (uGradnji != null && poeniGradnje > 0)
            {
                Zgrada.ZgradaInfo zgradaTip = uGradnji.Value;
                double            cijena    = zgradaTip.CijenaGradnje.iznos(Igrac.efekti);
                if (zgradaTip.orbitalna)
                {
                    cijena *= Efekti[FaktorCijeneOrbitalnih];
                }
                poeniGradnje += ostatakGradnje[zgradaTip.grupa];

                long brZgrada          = (long)(poeniGradnje / cijena);
                long dopustenaKolicina = (long)Math.Min(
                    zgradaTip.DopustenaKolicina.iznos(Igrac.efekti),
                    zgradaTip.DopustenaKolicinaPoKrugu.iznos(Igrac.efekti));

                if (brZgrada < dopustenaKolicina)
                {
                    ostatakGradnje[zgradaTip.grupa] = poeniGradnje - brZgrada * cijena;
                    poeniGradnje = 0;
                }
                else
                {
                    brZgrada     = dopustenaKolicina;
                    poeniGradnje = poeniGradnje - (brZgrada * cijena - ostatakGradnje[zgradaTip.grupa]);
                    ostatakGradnje[zgradaTip.grupa] = 0;
                }

                if (!simulacija)
                {
                    if (brZgrada > 0)
                    {
                        Zgrada z = new Zgrada(zgradaTip, brZgrada);

                        if (z.tip.instantEfekt)
                        {
                            z.djeluj(this, Igrac.efekti);
                        }
                        else
                        {
                            if (Zgrade.ContainsKey(z.tip))
                            {
                                Zgrade[z.tip].kolicina += brZgrada;
                            }
                            else
                            {
                                Zgrade.Add(z.tip, z);
                            }
                        }

                        if (!z.tip.brod && !z.tip.ponavljaSe)
                        {
                            Igrac.poruke.AddLast(Poruka.NovaZgrada(this, z.tip));
                        }
                    }

                    long brNovih = brZgrada;
                    if (Zgrade.ContainsKey(zgradaTip))
                    {
                        brZgrada = Zgrade[zgradaTip].kolicina;
                    }
                    else
                    {
                        brZgrada = 0;
                    }
                }

                uGradnji = uGradnji.Next;
            }

            this.UtroseniPoeniIndustrije = pocetniPoeniGradnje - poeniGradnje;
            this.UtrosenUdioIndustrije   = UtroseniPoeniIndustrije / (Efekti[BrRadnika] * Efekti[IndPoRadnikuEfektivno]);
        }
Example #10
0
        public async Task <IHttpActionResult> PricuvaRezijeCreateOrUpdate(Zgrade zgrada)
        {
            try
            {
                foreach (var prGod in zgrada.PricuvaRezijeGodina)
                {
                    prGod.ZgradaId = zgrada.Id;
                    if (prGod.Id == 0)
                    {
                        _db.PricuvaRezijeGodina.Add(prGod);
                        _db.PrihodiRashodi.Add(new PrihodiRashodi {
                            Godina = prGod.Godina, ZgradaId = zgrada.Id
                        });
                    }
                    else
                    {
                        // brisanja nema, znaci samo update moze
                        var target = await _db.PricuvaRezijeGodina.FirstOrDefaultAsync(p => p.Id == prGod.Id);

                        //foreach (var stanje in prGod.PricuvaRezijeGodina_StanjeOd)
                        //{
                        //    _db.PricuvaRezijeGodina_StanjeOd.Attach(stanje);
                        //    _db.Entry(stanje).State = EntityState.Modified;
                        //}

                        foreach (var prMj in prGod.PricuvaRezijeMjesec)
                        {
                            prMj.PrivuvaRezijeGodId = prGod.Id;
                            if (prMj.Status == "a")
                            {
                                _db.PricuvaRezijeMjesec.Add(prMj);
                            }
                            else
                            {
                                // brisanja nema, dakle status je 'u'
                                foreach (var master in prMj.PricuvaRezijePosebniDioMasteri)
                                {
                                    _db.PricuvaRezijePosebniDioMasteri.Attach(master);
                                    _db.Entry(master).State = EntityState.Modified;

                                    foreach (var vlasnik in master.PricuvaRezijePosebniDioMasterVlasnici)
                                    {
                                        _db.PricuvaRezijePosebniDioMasterVlasnici.Attach(vlasnik);
                                        _db.Entry(vlasnik).State = EntityState.Modified;
                                    }
                                    foreach (var povrsina in master.PricuvaRezijePosebniDioMasterPovrsine)
                                    {
                                        _db.PricuvaRezijePosebniDioMasterPovrsine.Attach(povrsina);
                                        _db.Entry(povrsina).State = EntityState.Modified;
                                    }
                                    foreach (var prip in master.PricuvaRezijePosebniDioMasterPripadci)
                                    {
                                        _db.PricuvaRezijePosebniDioMasterPripadci.Attach(prip);
                                        _db.Entry(prip).State = EntityState.Modified;
                                    }
                                }
                                _db.PricuvaRezijeMjesec.Attach(prMj);
                                _db.Entry(prMj).State = EntityState.Modified;
                            }
                        }
                    }
                }
                await _db.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex) { return(InternalServerError()); }
        }
Example #11
0
        public async Task <IHttpActionResult> PrihodiRashodiCreateOrUpdate(Zgrade zgradaObj)
        {
            try
            {
                // zanima nas master - ako je status 'a', insert, inace ne diraj
                // PrihodiRashodi_Prihodi
                // PrihodiRashodi_Rashodi

                foreach (var prihodRashod in zgradaObj.PrihodiRashodi)
                {
                    prihodRashod.ZgradaId = zgradaObj.Id;
                    if (prihodRashod.Status == "a")
                    {
                        _db.PrihodiRashodi.Add(prihodRashod);
                    }
                    else
                    {
                        foreach (var pr in prihodRashod.PrihodiRashodi_Prihodi)
                        {
                            pr.PrihodiRashodiGodId = prihodRashod.Id;
                            if (pr.Status == "a")
                            {
                                _db.PrihodiRashodi_Prihodi.Add(pr);
                            }
                            else if (pr.Status == "d")
                            {
                                var target = await _db.PrihodiRashodi_Prihodi.FirstOrDefaultAsync(p => p.Id == pr.Id);

                                if (target != null)
                                {
                                    _db.PrihodiRashodi_Prihodi.Remove(target);
                                }
                            }
                            else
                            {
                                // Status = 'u'
                                _db.PrihodiRashodi_Prihodi.Attach(pr);
                                _db.Entry(pr).State = EntityState.Modified;
                            }
                        }
                        foreach (var ra in prihodRashod.PrihodiRashodi_Rashodi)
                        {
                            ra.PrihodiRashodiGodId = prihodRashod.Id;
                            if (ra.Status == "a")
                            {
                                _db.PrihodiRashodi_Rashodi.Add(ra);
                            }
                            else if (ra.Status == "d")
                            {
                                var target = await _db.PrihodiRashodi_Rashodi.FirstOrDefaultAsync(p => p.Id == ra.Id);

                                if (target != null)
                                {
                                    _db.PrihodiRashodi_Rashodi.Remove(target);
                                }
                            }
                            else
                            {
                                // Status = 'u'
                                _db.PrihodiRashodi_Rashodi.Attach(ra);
                                _db.Entry(ra).State = EntityState.Modified;
                            }
                        }
                    }
                }
                await _db.SaveChangesAsync();

                return(Ok(zgradaObj));
            }
            catch (Exception ex) { return(InternalServerError()); }
        }
Example #12
0
        public async Task <JsonResult> SendRashodi(List <UplatniceRashodi> list)
        {
            if (list == null)
            {
                return(Json(new { success = false }));
            }

            if (list.Count == 0)
            {
                return(Json(new { success = false }));
            }


            var identity  = (ClaimsIdentity)User.Identity;
            var companyId = Convert.ToInt32(identity.FindFirstValue("Cid"));
            var tvrtka    = await _db.Kompanije.FirstOrDefaultAsync(p => p.Id == companyId);

            _tvrtka       = tvrtka;
            IBANPrimatelj = tvrtka.IBAN;

            // za svaki master, kreiraj uplatnicu (pdf), qr kod, nadji kome se salje i posalji
            IEnumerable <int> masteri = list.Where(p => p.poslano != true).Select(p => p.masterId).Distinct();

            if (masteri.Count() == 0)
            {
                return(Json(new { success = false }));
            }



            //int godina = (await _db.PrihodiRashodi.FirstOrDefaultAsync(p => p.Id == list[0].prihodiRashodiGodId)).Godina;
            int godina   = list[0].godina;
            int zgradaId = list[0].zgradaId;
            int mjesec   = list[0].mjesec;


            string email     = "";
            var    zgradaObj = await _db.Zgrade.FirstOrDefaultAsync(p => p.Id == zgradaId);

            _zgrada = zgradaObj;

            List <UplatniceRashodiPopis> uplatniceList = new List <UplatniceRashodiPopis>();

            foreach (var zgradaMasterId in masteri)
            {
                //var priRezGodina = await _db.PricuvaRezijeGodina.FirstOrDefaultAsync(p => p.ZgradaId == zgradaId && p.Godina == godina);
                //var priRezMjesec = priRezGodina.PricuvaRezijeMjesec.FirstOrDefault(p => p.Mjesec == mjesec);
                //var master = priRezMjesec.PricuvaRezijePosebniDioMasteri.FirstOrDefault(p => p.PosebniDioMasterId == zgradaMasterId);
                //var vlasnik = master.PricuvaRezijePosebniDioMasterVlasnici.FirstOrDefault(p => p.PricuvaRezijePosebniDioMasterId == master.Id);
                //var vlasnikObj = await _db.Zgrade_Stanari.FirstOrDefaultAsync(p => p.Id == vlasnik.VlasnikId);

                var vlasniciPeriod = await _db.Zgrade_PosebniDijeloviMaster_VlasniciPeriod.FirstOrDefaultAsync(p => p.PosebniDioMasterId == zgradaMasterId && p.Zatvoren != true);

                // period nije zatvoren!
                var vlasnici = vlasniciPeriod.Zgrade_PosebniDijeloviMaster_VlasniciPeriod_Vlasnici.Where(p => p.VlasniciPeriodId == vlasniciPeriod.Id);
                var vlasnik  = vlasnici.FirstOrDefault(p => p.UplatnicaGlasiNaVlasnika == true); // uzeo prvog
                if (vlasnik != null)
                {
                    var vlasnikObj = await _db.Zgrade_Stanari.FirstOrDefaultAsync(p => p.Id == vlasnik.StanarId);

                    Platitelj = vlasnikObj.Ime + " " + vlasnikObj.Prezime;
                    string PozivNaBroj = "987654321";
                    Iznos = list.Where(p => p.masterId == zgradaMasterId && p.godina == godina).Sum(p => p.iznos);

                    var zgradaMaster = await _db.Zgrade_PosebniDijeloviMaster.FirstOrDefaultAsync(p => p.Id == zgradaMasterId);

                    email = (await _db.Zgrade_Stanari.FirstOrDefaultAsync(p => p.Id == zgradaMaster.UplatnicaStanarId)).Email;

                    var u = new UplatniceRashodiPopis
                    {
                        Email          = email,
                        PdfFileName    = UplatnicaPdf(Opis, Platitelj, zgradaObj.Adresa, zgradaObj.Mjesto, IBANPrimatelj, PozivNaBroj, Iznos),
                        ZgradaMasterId = zgradaMasterId
                    };
                    uplatniceList.Add(u);
                }
            }

            var ret = await SendMail(uplatniceList, Opis, Poruka);

            foreach (var r in ret)
            {
                var targetGod = await _db.PrihodiRashodi.FirstOrDefaultAsync(p => p.Godina == godina && p.ZgradaId == zgradaId);

                var targetRashodi = targetGod.PrihodiRashodi_Rashodi.Where(p => p.Mjesec == mjesec);
                foreach (var t in targetRashodi)
                {
                    if (t.PosebniDioMasterId == r.ZgradaMasterId)
                    {
                        t.PoslanoZaMjesec = r.Poslano;
                        t.StatusSlanja    = r.StatusText;
                        t.DatumSlanja     = DateTime.Now;
                        t.PdfFileName     = r.PdfFileName;

                        //list.FirstOrDefault(p => p.masterId == t.PosebniDioMasterId).datumSlanja = t.DatumSlanja;
                        //list.FirstOrDefault(p => p.masterId == t.PosebniDioMasterId).poslano = r.Poslano;
                        //list.FirstOrDefault(p => p.masterId == t.PosebniDioMasterId).statusSlanja = r.StatusText;
                        foreach (var item in list.Where(p => p.masterId == t.PosebniDioMasterId && p.isUkupnoRow != true))
                        {
                            item.datumSlanja  = t.DatumSlanja;
                            item.poslano      = r.Poslano;
                            item.statusSlanja = r.StatusText;
                            item.PdfFileName  = r.PdfFileName;
                        }
                    }
                }
            }
            await _db.SaveChangesAsync();

            //return new HttpStatusCodeResult(200, list.ToString());
            return(Json(new { success = true, response = list }));
            // kome se salje - pise u pdMasteru u zgradi - email
        }