示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
        /// <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")));
                        }
                    }
                }
            }
        }
示例#6
0
        /// <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();
                    }
                }
            }
        }