public IHttpActionResult PutVOTE_TO_AGENDA(int id, VOTE_TO_AGENDA vOTE_TO_AGENDA) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != vOTE_TO_AGENDA.Id) { return(BadRequest()); } db.Entry(vOTE_TO_AGENDA).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!VOTE_TO_AGENDAExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult GetVOTE_TO_AGENDA(int id) { VOTE_TO_AGENDA vOTE_TO_AGENDA = db.VOTE_TO_AGENDA.Find(id); if (vOTE_TO_AGENDA == null) { return(NotFound()); } return(Ok(vOTE_TO_AGENDA)); }
public IHttpActionResult PostVOTE_TO_AGENDA(VOTE_TO_AGENDA vOTE_TO_AGENDA) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.VOTE_TO_AGENDA.Add(vOTE_TO_AGENDA); db.SaveChanges(); return(CreatedAtRoute("DefaultApi", new { id = vOTE_TO_AGENDA.Id }, vOTE_TO_AGENDA)); }
public IHttpActionResult DeleteVOTE_TO_AGENDA(int id) { VOTE_TO_AGENDA vOTE_TO_AGENDA = db.VOTE_TO_AGENDA.Find(id); if (vOTE_TO_AGENDA == null) { return(NotFound()); } db.VOTE_TO_AGENDA.Remove(vOTE_TO_AGENDA); db.SaveChanges(); return(Ok(vOTE_TO_AGENDA)); }
/// <summary> /// find in oknesset the relevant vote and update score etc... /// </summary> private void updateVoteToAgenda() { // b. add/update the data for score on every bill for any agenda using (AgendaEntities dbv = new AgendaEntities()) { var context = System.Web.HttpContext.Current; foreach (VOTE v in dbv.VOTE) { if (v.BILL1.oknesset_url.Contains("https://oknesset.org/bill/")) { //ErrorLog.GetDefault(context).Log(new Error(new Exception("updateVoteToAgenda-1-v.BILL1.oknesset_url:" + v.BILL1.oknesset_url))); string billOknessetId = v.BILL1.oknesset_url.Replace("https://oknesset.org/bill/", "").Replace("/", ""); var votesToAgenda = _download_serialized_json_data <RootObjectOknessetBill>("https://oknesset.org/api/v2/bill/" + billOknessetId); if (votesToAgenda.agendas != null && votesToAgenda.agendas.agenda_list != null) { foreach (OknessetBillAgendaList a in votesToAgenda.agendas.agenda_list.ToList()) { using (AgendaEntities db = new AgendaEntities()) { // find if vote already updated //db.Entry(aGENDA).State = EntityState.Modified; //db.SaveChanges(); int agnId = int.Parse(a.resource_uri.Replace("api/v2/agenda/", "").Replace("/", "")); // check if agenda exist in the db, else add it if (db.AGENDA.Where(a1 => a1.Id == agnId).Count() == 0) { ErrorLog.GetDefault(context).Log(new Error(new Exception("agenda missing, id = " + agnId))); } VOTE_TO_AGENDA v2a = db.VOTE_TO_AGENDA.Where(va => va.agenda == agnId && va.vote == v.Id).FirstOrDefault(); if (v2a == null) { v2a = new VOTE_TO_AGENDA(); v2a.vote = v.Id; v2a.agenda = agnId; v2a.score = (decimal)a.score; v2a.volume = (decimal)a.importance; db.VOTE_TO_AGENDA.Add(v2a); db.SaveChanges(); } else { v2a.vote = v.Id; v2a.agenda = agnId; v2a.score = (decimal)a.score; v2a.volume = (decimal)a.importance; //db.VOTE_TO_AGENDA.e(v2a); db.SaveChanges(); } } } } else { ErrorLog.GetDefault(context).Log(new Error(new Exception("(votesToAgenda.agendas == null"))); } } // do the same to a vote if (v.BILL1.oknesset_url.Contains("https://oknesset.org/vote/")) { string billOknessetId = v.BILL1.oknesset_url.Replace("https://oknesset.org/vote/", "").Replace("/", ""); //ErrorLog.GetDefault(context).Log(new Error(new Exception("updateVoteToAgenda-2-v.BILL1.oknesset_url:" + v.BILL1.oknesset_url))); var votesToAgenda = _download_serialized_json_data <RootObjectOknessetVoteApi>("https://oknesset.org/api/v2/vote/" + billOknessetId); if (votesToAgenda.agendas != null) { foreach (AgendaOknessetVoteApi a in votesToAgenda.agendas.ToList()) { using (AgendaEntities db = new AgendaEntities()) { // find if vote already updated //db.Entry(aGENDA).State = EntityState.Modified; //db.SaveChanges(); int agnId = int.Parse(a.resource_uri.Replace("api/v2/agenda/", "").Replace("/", "")); // check if agenda exist in the db, else add it if (db.AGENDA.Where(a1 => a1.Id == agnId).Count() == 0) { ErrorLog.GetDefault(context).Log(new Error(new Exception("agenda2 missing, id = " + agnId))); } VOTE_TO_AGENDA v2a = db.VOTE_TO_AGENDA.Where(va => va.agenda == agnId && va.vote == v.Id).FirstOrDefault(); if (v2a == null) { v2a = new VOTE_TO_AGENDA(); v2a.vote = v.Id; v2a.agenda = agnId; v2a.score = (decimal)a.score; v2a.volume = (decimal)a.importance; db.VOTE_TO_AGENDA.Add(v2a); db.SaveChanges(); } else { v2a.vote = v.Id; v2a.agenda = agnId; v2a.score = (decimal)a.score; v2a.volume = (decimal)a.importance; //db.VOTE_TO_AGENDA.e(v2a); db.SaveChanges(); } } } } else { ErrorLog.GetDefault(context).Log(new Error(new Exception("2-(votesToAgenda.agendas == null"))); } } } } }
/// <summary> /// recalculate the general score of every agenda /// </summary> private void recalculate(int agendaId, DateTime from, DateTime to) { // foreach VOTE between from - to // (filter/update/delete and add) by agenda in VOTE_TO_AGENDA // add score,volume/(num of all vote)*100, base on vote in VOTE to the relevant mk in MK_SCORE using (AgendaEntities db = new AgendaEntities()) { // foreach VOTE between from - to // (filter/update/delete and add) by agenda in VOTE_TO_AGENDA var mksc = db.MK_SCORE.Where(mks => (mks.fromDate == from && mks.toDate == to && mks.agendaId == agendaId)); foreach (MK_SCORE m in mksc.ToList()) { db.MK_SCORE.Remove(m); db.SaveChanges(); } // add score,volume/(num of all vote)*100, base on vote in VOTE to the relevant mk in MK_SCORE var vote = db.VOTE.Where(v => (v.meeting >= from && v.meeting <= to)); foreach (VOTE v in vote.ToList()) { VOTE_TO_AGENDA v2a = v.VOTE_TO_AGENDA.Where(v_to_a => (v_to_a.agenda == agendaId && v_to_a.vote == v.Id)).FirstOrDefault(); List <MK_SCORE> ms_new_lst = db.MK_SCORE.Where(mks => (mks.fromDate == from && mks.toDate == to && mks.mk == v.mk && mks.agendaId == agendaId)).ToList(); if (v2a != null) { if (ms_new_lst != null && ms_new_lst.Count() > 0) { foreach (MK_SCORE m in ms_new_lst.ToList()) { if (v.vote1 == 1) { m.score += v2a.score; } else if (v.vote1 == 2) { m.score -= v2a.score; } else { // m.score -= v2a.score; } m.volume += v2a.volume; db.SaveChanges(); } } else { MK_SCORE ms_new = new MK_SCORE(); ms_new.mk = v.mk.Value; ms_new.score = v2a.score; if (v.vote1 == 1) { ms_new.score = v2a.score; } else if (v.vote1 == 2) { ms_new.score = -1 * v2a.score; } else { // m.score -= v2a.score; ms_new.score = 0; } ms_new.volume = v2a.volume; ms_new.fromDate = from; ms_new.toDate = to; ms_new.agendaId = agendaId; db.MK_SCORE.Add(ms_new); db.SaveChanges(); } } } // normilazed by number of votes var ms_new_lstn = db.MK_SCORE.Where(mks => (mks.fromDate == from && mks.toDate == to && mks.agendaId == agendaId)); int votes2Agenda = db.VOTE_TO_AGENDA.Where(v2a => (v2a.agenda == agendaId)).Count() / 12; // div by number of mk if (ms_new_lstn != null) { foreach (MK_SCORE m in ms_new_lstn.ToList()) { m.score = (Decimal)System.Data.SqlTypes.SqlDecimal.ConvertToPrecScale(m.score / votes2Agenda, 18, 3); m.volume = (Decimal)System.Data.SqlTypes.SqlDecimal.ConvertToPrecScale(m.volume / votes2Agenda, 18, 3); db.SaveChanges(); } } } }