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()); } }
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(); }
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; } } }
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()); } }
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()); } }
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); }
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); }
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 })); } }
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]); }
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()); } }
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()); } }
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 }