예제 #1
0
        private static async Task ImportCandidatesForBallot(Ballot senateBallot, List <ExcelCandidate> candidates,
                                                            ApplicationDbContext dbContext, int countyId)
        {
            foreach (var candidate in candidates)
            {
                var candidateResult = new CandidateResult
                {
                    BallotId       = senateBallot.BallotId,
                    CountyId       = countyId,
                    Division       = ElectionDivision.County,
                    BallotPosition = (int)candidate.ListPosition,
                    Name           = candidate.CandidateFirstName + " " + candidate.CandidateLastName,
                    PartyName      = candidate.PartyName
                };
                if (countyId.IsDiaspora())
                {
                    candidateResult.Division = ElectionDivision.Diaspora;
                    candidateResult.CountyId = null;
                }

                if (countyId == Consts.MinoritiesCountyId)
                {
                    candidateResult.CountyId = null;
                }
                dbContext.CandidateResults.Add(candidateResult);
            }

            await dbContext.SaveChangesAsync();
        }
예제 #2
0
        public bool TryParseCandidate(string name, Stream data, out CandidateResult result, out Exception error)
        {
            FileDescriptorProto candidate;

            try
            {
                candidate = Serializer.Deserialize <FileDescriptorProto>(data);
            }
            catch (EndOfStreamException ex)
            {
                result = CandidateResult.Rescan;
                error  = ex;
                return(false);
            }
            catch (Exception ex)
            {
                result = CandidateResult.Invalid;
                error  = ex;
                return(true);
            }

            Candidates.Add(candidate);

            result = CandidateResult.OK;
            error  = null;
            return(true);
        }
예제 #3
0
        private static CandidateResult CreateCandidateResult(Vote vote, Ballot ballot, List <Party> parties,
                                                             int?localityId, int?countyId, ElectionDivision division = ElectionDivision.Locality)
        {
            var candidateResult = new CandidateResult
            {
                BallotId   = ballot.BallotId,
                Division   = division,
                Votes      = vote.Votes,
                Name       = vote.Candidate,
                CountyId   = countyId,
                LocalityId = localityId,
                Seats1     = vote.Mandates1,
                Seats2     = vote.Mandates2
            };
            var partyName = ballot.BallotType == BallotType.LocalCouncil || ballot.BallotType == BallotType.CountyCouncil ? vote.Candidate : vote.Party;

            if (partyName.IsNotEmpty())
            {
                candidateResult.PartyId = parties.FirstOrDefault(p => p.Alias.ContainsString(partyName))?.Id
                                          ?? parties.FirstOrDefault(p => p.Name.ContainsString(partyName))?.Id;
            }
            candidateResult.PartyName = partyName;
            if (candidateResult.PartyId == null && partyName.IsNotEmpty())
            {
                candidateResult.ShortName = partyName.GetPartyShortName(null);
            }

            return(candidateResult);
        }
        private async Task <CandidateResult> RejectCandidate([NotNull] Candidate entity)
        {
            _logger.LogInformation(GetLogMessage($@"Rejecting Candidate: {entity.Id}"));

            var retVal = new CandidateResult();

            entity.ObjectState = ObjectState.Modified;
            entity.Status      = CandidateStatus.Rejected;

            entity.StatusTransitions.Add(new CandidateStatusTransition()
            {
                ObjectState = ObjectState.Added,
                Status      = CandidateStatus.Rejected
            });


            var leadResult = Repository.InsertOrUpdateGraph(entity, true);

            _logger.LogDebug(GetLogMessage("{0} results added"), leadResult);

            if (leadResult > 0)
            {
                retVal.Succeeded = true;
                await Task.Run(() =>
                {
                    RaiseEvent(new CandidateRejectedEvent
                    {
                        CandidateId = entity.Id
                    });
                });
            }

            return(retVal);
        }
        private async Task <CandidateResult> UpdateCandidate([NotNull] Candidate candidate)
        {
            _logger.LogInformation(GetLogMessage($@"Updating Candidate: {candidate.Id}"));

            var retVal = new CandidateResult
            {
                CandidateId = candidate.Id
            };

            var records = await Repository.UpdateAsync(candidate, true);

            if (records > 0)
            {
                retVal.Succeeded = true;
                await Task.Run(() =>
                {
                    RaiseEvent(new CandidateUpdatedEvent
                    {
                        CandidateId = candidate.Id
                    });
                });
            }


            return(retVal);
        }
예제 #6
0
        public static void Swap(CandidateResult[] results, int left, int right)
        {
            CandidateResult temp = results[right];

            results[right] = results[left];
            results[left]  = temp;
        }
예제 #7
0
        private async Task <CandidateResult> DeleteCandidate(Guid candidateId)
        {
            _logger.LogInformation(GetLogMessage("Candidate: {0}"), candidateId);

            var candidate = await Repository.FirstOrDefaultAsync(x => x.Id == candidateId);

            candidate.IsDeleted = true;
            var retVal = new CandidateResult()
            {
                CandidateId = candidateId
            };
            var records = await Repository.UpdateAsync(candidate, true);

            if (records > 0)
            {
                retVal.Succeeded = true;
                await Task.Run(() =>
                {
                    RaiseEvent(new CandidateDeletedEvent
                    {
                        CandidateId = candidateId
                    });
                });
            }

            return(retVal);
        }
예제 #8
0
 private static string GetCandidateName(CandidateResult c)
 {
     if (c.Party != null && c.Party.Name.ToLower() == "independent")
     {
         return(c.Name);
     }
     return(c.Party?.Name.Or(c.PartyName).Or(c.Name) ?? c.Name.Or(c.PartyName));
 }
 public static string GetPartyColor(this CandidateResult c)
 {
     if (c.Party != null && c.Party.Name?.ToLower() == "independent" || c.Name.ToLower() == "independent")
     {
         return(null);
     }
     return(c.Party?.Color);
 }
예제 #10
0
 private static CandidateResult[] ResultsRecievesFirstSectionResults(CandidateResult[][] results)
 {
     CandidateResult[] firstsectionResults = new CandidateResult[results[0].Length];
     for (int i = 0; i <= results[0].Length - 1; i++)
     {
         firstsectionResults[i] = results[0][i];
     }
     return(firstsectionResults);
 }
 public static string GetCandidateName(this CandidateResult c, Ballot ballot)
 {
     if (ballot.BallotType == BallotType.EuropeanParliament || ballot.BallotType == BallotType.Senate ||
         ballot.BallotType == BallotType.House)
     {
         return(c.Party?.Name.Or(c.PartyName).Or(c.Name) ?? c.Name.Or(c.PartyName));
     }
     return(c.Name.IsEmpty() ? c.PartyName : c.Name);
 }
예제 #12
0
 private static CandidateResult[] BuildTotalResult(ResultInEachOffice[] electionResults)
 {
     CandidateResult[] total = new CandidateResult[electionResults[0].office.Length];
     for (int i = 0; i < total.Length; i++)
     {
         total[i].name = electionResults[0].office[i].name;
         total[i].votes = 0;
     }
     return total;
 }
예제 #13
0
        public CandidateResult ResultDetailsObject(int score, string email, String examCode, byte submitStatus)
        {
            var resultDetails = new CandidateResult()
            {
                Email      = email,
                TotalScore = score,
                SubmitExam = submitStatus,
                TestCode   = examCode
            };

            return(resultDetails);
        }
예제 #14
0
 private static Winner CreateWinner(int ballotId, int?countyId, CandidateResult localityWinner, Turnout turnoutForLocality, ElectionDivision division)
 {
     return(new Winner
     {
         BallotId = ballotId,
         CandidateId = localityWinner.Id,
         CountyId = countyId,
         Division = division,
         Name = localityWinner.Name,
         PartyId = localityWinner.PartyId,
         TurnoutId = turnoutForLocality?.Id
     });
 }
예제 #15
0
 private static void OrderList(CandidateResult[] finalResults)
 {
     for (int i = 1; i <= finalResults.Length - 1; i++)
     {
         CandidateResult candidate = finalResults[i];
         int             position  = i - 1;
         while ((position >= 0) && (finalResults[position].votes < candidate.votes))
         {
             Swap(finalResults, position + 1, position);
             position--;
         }
         finalResults[position + 1] = candidate;
     }
 }
예제 #16
0
 private static void PopulateCandidateWithPartyInfo(CandidateResult candidate, Party party)
 {
     candidate.Party   = party;
     candidate.PartyId = party.Id;
     if (party?.Alias != null)
     {
         candidate.Name = candidate.Name.Replace(party.Alias, "");
     }
     if (party.Name != null)
     {
         candidate.Name = candidate.Name.Replace(party.Name, "");
     }
     candidate.Name = candidate.Name.Trim('-', '.', ' ');
 }
예제 #17
0
 private static Winner CreateWinner(int ballotId, CandidateResult countyWinner,
                                    ElectionMapWinner electionMapWinner, int turnoutId, int countryId, ElectionDivision division)
 {
     return(new Winner
     {
         BallotId = ballotId,
         CandidateId = countyWinner.Id,
         Name = electionMapWinner.Winner.Name,
         PartyId = electionMapWinner.Winner.Party?.Id,
         Votes = electionMapWinner.Winner.Votes,
         TurnoutId = turnoutId,
         CountryId = countryId,
         Division = division
     });
 }
예제 #18
0
 public void TestWith2Sections()
 {
     CandidateResult[] section1Results = new CandidateResult[] { new CandidateResult("Candidate1", 20), new CandidateResult("Candidate3", 15),
                                                                 new CandidateResult("Candidate2", 14), new CandidateResult("Candidate4", 12) };
     CandidateResult[] section2Results = new CandidateResult[] { new CandidateResult("Candidate2", 35), new CandidateResult("Candidate3", 19),
                                                                 new CandidateResult("Candidate1", 17), new CandidateResult("Candidate4", 3) };
     CandidateResult[][] results = new CandidateResult[][]
     {
         section1Results,
         section2Results
     };
     CandidateResult[] expectedFinalResults = new CandidateResult[] { new CandidateResult("Candidate2", 49), new CandidateResult("Candidate1", 37),
                                                                      new CandidateResult("Candidate3", 34), new CandidateResult("Candidate4", 15) };
     CandidateResult[] actualResults = OrderElectionsResultList(results);
     CollectionAssert.AreEqual(expectedFinalResults, actualResults);
 }
예제 #19
0
        public void submitAllQuestions(SubmitAnswerCustomModel value, Dictionary <string, string> email)
        {
            var allQuestions   = db.Questions.Where(s => s.ExamCode == value.code).ToList();
            var savedQuestions = db.CandidateAnswer.Where(s => s.TestCode == value.code && s.Email == email["Email"]).ToList();

            int i;

            if (savedQuestions.Count != 0)
            {
                for (i = 0; i < allQuestions.Count; i++)
                {
                    var status = db.CandidateAnswer.Where(s => s.Id == allQuestions[i].Id).FirstOrDefault();
                    if (status == null)
                    {
                        String id = allQuestions[i].Id.ToString();

                        CandidateAnswer answerDetails = AnswerDetailsObject(email["Email"], value.code, id, 0, null);
                        db.CandidateAnswer.Add(answerDetails);
                        db.SaveChanges();
                    }
                }
                db.CandidateResult.Where(s => s.Email == email["Email"] && s.TestCode == value.code).ToList().ForEach(x => x.SubmitExam = 1);
                db.SaveChanges();
                //if (allQuestions.Count == savedQuestions.Count)
                //{
                //    db.CandidateResult.Where(s => s.Email == email["Email"] && s.TestCode == value.code).ToList().ForEach(x=> x.SubmitExam = 1);
                //    db.SaveChanges();
                //    return;
                //}
            }
            else
            {
                CandidateResult resultDetails = ResultDetailsObject(0, email["Email"], value.code, 0);
                db.CandidateResult.Add(resultDetails);
                db.SaveChanges();
                for (i = 0; i < allQuestions.Count; i++)
                {
                    String          id            = allQuestions[i].Id.ToString();
                    CandidateAnswer answerDetails = AnswerDetailsObject(email["Email"], value.code, id, 0, null);
                    db.CandidateResult.Where(s => s.Email == email["Email"] && s.TestCode == value.code).ToList().ForEach(x => x.SubmitExam = 1);
                    db.CandidateAnswer.Add(answerDetails);
                    db.SaveChanges();
                }
            }
        }
예제 #20
0
        public List <CandidateResult> RetrieveWinners(List <CandidateResult> results,
                                                      BallotType ballotType)
        {
            foreach (var candidateResult in results)
            {
                if (candidateResult.Party == null && candidateResult.PartyName.IsNotEmpty())
                {
                    candidateResult.Party = new Party {
                        Name = candidateResult.PartyName
                    }
                }
                ;
            }
            var groupedWinners = results
                                 .GroupBy(w => w.Party?.Name)
                                 .OrderByDescending(w => w.Count())
                                 .ToList();
            var candidateResults = new List <CandidateResult>();

            foreach (var candidate in groupedWinners)
            {
                var electionMapWinner = candidate.FirstOrDefault();
                var item = new CandidateResult
                {
                    Name     = candidate.Key == null ? "INDEPENDENT" : electionMapWinner?.Party.Name,
                    Party    = electionMapWinner?.Party,
                    CountyId = electionMapWinner.CountyId
                };
                if (ballotType == BallotType.Mayor || ballotType == BallotType.CountyCouncilPresident)
                {
                    item.Votes = candidate.Count();
                }
                else
                {
                    item.Votes = candidate.Sum(c => c.Votes);
                }
                item.TotalSeats = item.SeatsGained = candidate.Sum(c => c.Seats1 + c.Seats2);
                candidateResults.Add(item);
            }

            return(candidateResults);
        }
    }
예제 #21
0
 public static CandidateResult[] CreateElectionResultList(CandidateResult[][] results)
 {
     CandidateResult[] cumulatedResults = new CandidateResult[results[0].Length];
     cumulatedResults = ResultsRecievesFirstSectionResults(results);
     for (int i = 1; i <= results.Length - 1; i++)
     {
         CandidateResult[] currentSection = results[i];
         for (int j = 0; j <= currentSection.Length - 1; j++)
         {
             for (int h = 0; h <= cumulatedResults.Length - 1; h++)
             {
                 if (String.Compare(cumulatedResults[h].candidateName, currentSection[j].candidateName) == 0)
                 {
                     cumulatedResults[h].votes += currentSection[j].votes;
                     break;
                 }
             }
         }
     }
     return(cumulatedResults);
 }
        public ActionResult ViewResult()
        {
            CandidateResult cand = new CandidateResult();
            var             user = context.Users.FirstOrDefault(x => x.UserName == HttpContext.User.Identity.Name);

            cand.FirstName = user.FirstName;
            cand.LastName  = user.LastName;
            var candidate = context.InterviewDetail.Where(x => x.Candidate.UserName == HttpContext.User.Identity.Name);

            cand.AverageRating = "Not Rated.";
            cand.Result        = "No Result Found.";
            if (candidate.Count() > 0)
            {
                var totalRating = Convert.ToDecimal(candidate.Sum(x => x.Rating));
                var counter     = candidate.Count();
                var ratingCount = (totalRating / counter);
                cand.AverageRating = ratingCount.ToString();
                cand.Result        = ratingCount >= 3 ? "Pass" : "Fail";
            }

            var allUsers = context.InterviewDetail.OrderBy(l => l.InterviewDate).GroupBy(x => x.Candidate.UserName).Select(g => new
            {
                CurrentUser  = g.Key,
                TotalRatings = g.Sum(k => k.Rating)
            }).OrderByDescending(y => y.TotalRatings);

            cand.Rank = 0;
            foreach (var rateduser in allUsers)
            {
                if (rateduser.CurrentUser == HttpContext.User.Identity.Name)
                {
                    cand.Rank++;
                    break;
                }
                cand.Rank++;
            }

            return(View(cand));
        }
 public static string GetCandidateShortName(this CandidateResult c, Ballot ballot)
 {
     try
     {
         if (ballot.BallotType == BallotType.EuropeanParliament || ballot.BallotType == BallotType.Senate ||
             ballot.BallotType == BallotType.House)
         {
             return(c.ShortName);
         }
         if (c.Name.IsParty() || c.Name.IsEmpty())
         {
             return(c.ShortName);
         }
         var processedName = ParseShortName(c.Name);
         return(processedName);
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         return(c.ShortName);
     }
 }
        public ActionResult ViewRank()
        {
            IList <CandidateResult> candidateResults = new List <CandidateResult>();
            var interviewDetails = context.InterviewDetail.ToList();
            var candIds          = interviewDetails.Select(y => y.Candidate.Id).ToList();
            var allUsers         = context.Users.Where(x => candIds.Contains(x.Id)).ToList();

            var interviewDetailsGroups = interviewDetails.OrderBy(l => l.InterviewDate).GroupBy(x => x.Candidate.UserName).Select(g => new
            {
                CurrentUser  = g.Key,
                TotalRatings = g.Sum(k => k.Rating),
                RoundsTaken  = g.GroupBy(a => a.Round.Id).Select(r => new RoundDetails {
                    RoundName = r.FirstOrDefault().Round.Description, TotalRound = r.Count(), TotalRating = r.Sum(t => t.Rating)
                })
            }).OrderByDescending(y => y.TotalRatings);

            foreach (var user in allUsers)
            {
                CandidateResult candidateResult = new CandidateResult();

                var candidate = interviewDetails.Where(x => x.Candidate.UserName == user.UserName);
                candidateResult.FirstName = user.FirstName;
                candidateResult.LastName  = user.LastName;
                candidateResult.InterviewRounds.AddRange(interviewDetailsGroups.Where(x => x.CurrentUser == user.UserName).Select(a => a.RoundsTaken).FirstOrDefault().ToList());
                candidateResult.Rank = 0;
                foreach (var interviewDetailsGroup in interviewDetailsGroups)
                {
                    if (interviewDetailsGroup.CurrentUser == user.UserName)
                    {
                        candidateResult.Rank++;
                        break;
                    }
                    candidateResult.Rank++;
                }
                candidateResults.Add(candidateResult);
            }

            return(View(candidateResults));
        }
예제 #25
0
 private CandidateResult[] SortByVotes(CandidateResult[] total)
 {
     int k = 1;
     while (k != 0)
     {
         k = 0;
         for (int i = 1; i < total.Length; i++)
         {
             if (total[0].votes < total[i].votes)
                 Swap(ref total[i], ref total[++k]);
         }
         Swap(ref total[0], ref total[k]);
     }
     return total;
 }
예제 #26
0
 public ResultInEachOffice(CandidateResult[] office)
 {
     this.office = office;
 }
예제 #27
0
 private void Swap(ref CandidateResult firstCandidate, ref CandidateResult secondCandidate)
 {
     CandidateResult temp = firstCandidate;
     firstCandidate = secondCandidate;
     secondCandidate = temp;
 }
예제 #28
0
        private async Task <CandidateResult> CreateCandidate(IOrganizationRecruiter re, Guid providerOrganizationId, CandidateInput input)
        {
            _logger.LogInformation(GetLogMessage("RE: {0}"), re.OrganizationId);
            var retVal = new CandidateResult();

            var isExternal = providerOrganizationId != re.OrganizationId;

            _logger.LogDebug(GetLogMessage("External Lead: {0}"), isExternal);

            var recruiter = await _recruiterRepository.Queryable()
                            .Include(x => x.Recruiter)
                            .ThenInclude(x => x.Person)
                            .Where(x => x.RecruiterId == re.RecruiterId && x.OrganizationId == re.OrganizationId)
                            .FirstAsync();

            var recruiterBonus         = recruiter.RecruiterBonus;
            var recruitingAgencyBonus  = 0m;
            var recruitingAgencyStream = 0m;
            var recruiterStream        = recruiter.RecruiterStream;


            _logger.LogDebug(
                GetLogMessage(
                    $@"Recruiter Found: {recruiter.Recruiter.Person.DisplayName}"));

            if (isExternal)
            {
                var recruitingAgreement = await _recruitingAgreements.Queryable()
                                          .Where(x => x.ProviderOrganizationId == providerOrganizationId &&
                                                 x.RecruitingOrganizationId == re.OrganizationId)
                                          .FirstOrDefaultAsync();


                if (recruitingAgreement == null)
                {
                    retVal.ErrorMessage = "Recruiting agreement doesn't exist between recruiting and provider organization";
                    return(retVal);
                }

                if (recruitingAgreement.Status != AgreementStatus.Approved)
                {
                    retVal.ErrorMessage = "Recruiting agreement is not approved";
                    return(retVal);
                }

                _logger.LogTrace(
                    GetLogMessage(
                        $@"Recruiting Agreement found to be valid"));


                recruiterBonus         = recruitingAgreement.RecruiterBonus;
                recruitingAgencyBonus  = recruitingAgreement.RecruitingAgencyBonus;
                recruitingAgencyStream = recruitingAgreement.RecruitingAgencyStream;
                recruiterStream        = recruitingAgreement.RecruiterStream;
            }

            var candidate = new Candidate
            {
                Iso2                    = input.Iso2,
                ProvinceState           = input.ProvinceState,
                RecruiterStream         = recruiterStream,
                RecruiterBonus          = recruiterBonus,
                RecruitingAgencyStream  = recruitingAgencyStream,
                RecruitingAgencyBonus   = recruitingAgencyBonus,
                ProviderOrganizationId  = providerOrganizationId,
                RecruiterOrganizationId = re.OrganizationId,
                RecruiterId             = re.RecruiterId,
                UpdatedById             = _userInfo.UserId,
                CreatedById             = _userInfo.UserId,
                ObjectState             = ObjectState.Added,
                Status                  = CandidateStatus.New,
                StatusTransitions       = new List <CandidateStatusTransition>()
                {
                    new CandidateStatusTransition()
                    {
                        Status      = CandidateStatus.New,
                        ObjectState = ObjectState.Added
                    }
                }
            }.InjectFrom(input) as Candidate;

            var candidateResult = Repository.Insert(candidate, true);

            _logger.LogDebug(GetLogMessage("{0} records updated in database."), candidateResult);

            if (candidateResult > 0)
            {
                retVal.Succeeded   = true;
                retVal.CandidateId = candidate.Id;

                await Task.Run(() =>
                {
                    RaiseEvent(new CandidateCreatedEvent
                    {
                        CandidateId = candidate.Id
                    });
                });
            }

            return(retVal);
        }
예제 #29
0
        private static ElectionMapWinner CreateElectionMapWinner(int?divisionId, Ballot ballot, CandidateResult winner,
                                                                 Turnout turnoutForDivision)
        {
            var electionMapWinner = new ElectionMapWinner
            {
                Id     = divisionId.GetValueOrDefault(),
                Winner = new MapWinner()
            };

            if (ballot.BallotType != BallotType.Referendum)
            {
                electionMapWinner.Winner.Name       = winner.Name;
                electionMapWinner.Winner.ShortName  = winner.ShortName;
                electionMapWinner.Winner.Votes      = winner.Votes;
                electionMapWinner.Winner.PartyColor = winner.Party?.Color ?? Consts.IndependentCandidateColor;
                electionMapWinner.Winner.Party      = winner.Party;
            }
            else
            {
                if (string.Equals(ballot.Election.Subtitle, "Invalidat"))
                {
                    electionMapWinner.Winner.Name      = "NU AU VOTAT";
                    electionMapWinner.Winner.ShortName = "NU AU VOTAT";
                    electionMapWinner.Winner.Votes     = turnoutForDivision.EligibleVoters - turnoutForDivision.TotalVotes;
                }
                else
                {
                    if (winner.YesVotes > winner.NoVotes)
                    {
                        electionMapWinner.Winner.Name      = "DA";
                        electionMapWinner.Winner.ShortName = "DA";
                        electionMapWinner.Winner.Votes     = winner.YesVotes;
                    }
                    else
                    {
                        electionMapWinner.Winner.Name      = "NU";
                        electionMapWinner.Winner.ShortName = "NU";
                        electionMapWinner.Winner.Votes     = winner.NoVotes;
                    }
                }
            }

            electionMapWinner.ValidVotes = turnoutForDivision.ValidVotes;
            return(electionMapWinner);
        }
예제 #30
0
        private static ElectionMapWinner CreateElectionMapWinner(int id, Ballot ballot, CandidateResult winner,
                                                                 Turnout turnoutForCountry)
        {
            var electionMapWinner = new ElectionMapWinner
            {
                Id     = id,
                Winner = new Winner()
            };

            if (ballot.BallotType != BallotType.Referendum)
            {
                electionMapWinner.Winner.Name       = winner.Name;
                electionMapWinner.Winner.ShortName  = winner.ShortName;
                electionMapWinner.Winner.Votes      = winner.Votes;
                electionMapWinner.Winner.PartyColor = winner.Party?.Color;
            }
            else
            {
                if (winner.ShortName == "DA")
                {
                    electionMapWinner.Winner.Name      = "DA";
                    electionMapWinner.Winner.ShortName = "DA";
                    electionMapWinner.Winner.Votes     = winner.YesVotes;
                }
                else
                {
                    electionMapWinner.Winner.Name      = "NU";
                    electionMapWinner.Winner.ShortName = "NU";
                    electionMapWinner.Winner.Votes     = winner.NoVotes;
                }
            }

            electionMapWinner.ValidVotes = turnoutForCountry.ValidVotes;
            return(electionMapWinner);
        }
예제 #31
0
 private static void PopulatePartyInfo(CandidateResult candidate, Party party)
 {
     candidate.Party   = party;
     candidate.PartyId = party.Id;
 }
예제 #32
0
        public static ExamViewModal CalculateResultData(ExamViewModal examViewModal)
        {
            int correctAnswercount = 0;
            int WrongAnswerCount   = 0;
            int NoAnswerCount      = 0;

            foreach (QuestionViewModel qvmodel in examViewModal.QuestionSheet)
            {
                var question = QuizAPI.Repository.QuestionRepository.GetQuestion(qvmodel.QuestionId);

                qvmodel.CorrectAnswer = question.CorrectAnswerIndex;

                int knowledgeareaid = question.KnowledgeAreaId;



                if (qvmodel.UserAnswer.Trim() == "")
                {
                    qvmodel.isCorrect = "S";
                    NoAnswerCount++;
                }
                else
                {
                    if (qvmodel.UserAnswer.Trim() == qvmodel.CorrectAnswer.Trim())
                    {
                        qvmodel.isCorrect = "Y";
                        correctAnswercount++;
                    }
                    else
                    {
                        qvmodel.isCorrect = "N";
                        WrongAnswerCount++;
                    }
                }


                var asd = from cnt in examViewModal.ExamKnowledgeViewModals
                          where cnt.KnowledgeAreaID == knowledgeareaid
                          select cnt;
                foreach (var element in asd)
                {
                    if (qvmodel.isCorrect == "Y")
                    {
                        element.CorrectAnswerCount = element.CorrectAnswerCount + 1;
                    }
                    else if (qvmodel.isCorrect == "S")
                    {
                        element.NoAnswerCount = element.NoAnswerCount + 1;
                    }
                    else if (qvmodel.isCorrect == "N")
                    {
                        element.WrongAnswersCount = element.WrongAnswersCount + 1;
                    }
                }
            }



            examViewModal.correctAnswercount = correctAnswercount;
            examViewModal.WrongAnswerCount   = WrongAnswerCount;
            examViewModal.NoAnswerCount      = NoAnswerCount;

            examViewModal.TotalMark    = correctAnswercount * examViewModal.MarkPerQstn;
            examViewModal.Negativemark = WrongAnswerCount * examViewModal.NegativemarkPerQstn;

            examViewModal.FinalMark = examViewModal.TotalMark - examViewModal.Negativemark;



            using (QuizContext cntxt = new QuizContext())
            {
                CandidateResult canreslt = new CandidateResult();
                canreslt.CandidateId        = examViewModal.Candidateviewmodal.CandidateId;
                canreslt.ExamTableMainId    = examViewModal.ExamTableMainId;
                canreslt.correctAnswercount = examViewModal.correctAnswercount;
                canreslt.WrongAnswerCount   = examViewModal.WrongAnswerCount;
                canreslt.NoAnswerCount      = examViewModal.NoAnswerCount;
                canreslt.UsedMinutes        = examViewModal.UsedMinutes;
                canreslt.TotalQuestion      = examViewModal.TotalQuestion;
                canreslt.TotalMark          = examViewModal.TotalMark;
                canreslt.Negativemark       = examViewModal.Negativemark;
                canreslt.FinalMark          = examViewModal.FinalMark;
                canreslt.ExamDate           = DateTime.Now;
                cntxt.CandidateResults.Add(canreslt);
                cntxt.SaveChanges();

                foreach (ExamKnowledgeViewModal knwmdl in examViewModal.ExamKnowledgeViewModals)
                {
                    CandidateResultDetail canresltdet = new CandidateResultDetail();
                    canresltdet.CandidateResultId  = canreslt.CandidateResultId;
                    canresltdet.KnowledgeAreaID    = knwmdl.KnowledgeAreaID;
                    canresltdet.TotalQstn          = knwmdl.TotalQstn;
                    canresltdet.WrongAnswersCount  = knwmdl.WrongAnswersCount;
                    canresltdet.NoAnswerCount      = knwmdl.NoAnswerCount;
                    canresltdet.CorrectAnswerCount = knwmdl.CorrectAnswerCount;
                    cntxt.CandidateResultDetails.Add(canresltdet);
                    cntxt.SaveChanges();
                }
            }



            return(examViewModal);
        }
예제 #33
0
        public void SignalingHandler(WebSocket webSocket, byte[] Incbuffer,
                                     WebSocketReceiveResult result)
        {
            var buffer     = Incbuffer.Where(x => x != 0).ToArray();
            var strCommand = Encoding.ASCII.GetString(buffer).Replace(@"\0", string.Empty);
            var objBuffer  = new Tuple <byte[], int>(null, 0);

            try
            {
                dynamic objSocket = new ExpandoObject();
                objSocket.connection = webSocket;
                objSocket.name       = string.Empty;
                objSocket.otherName  = string.Empty;

                BaseObject      incType       = null;
                CandidateObject CandidateType = null;


                try
                {
                    //Todo : You Can Do This Part Better That This
                    //Fix Commands With Leave Handeling v1
                    strCommand = StringHelper.FixCommand(strCommand);
                    incType    = SerializationHelper.Deserialize <BaseObject>(strCommand);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }

                if (incType.type == ClsEnumeration.EnumCommandType.login.ToString())
                {
                    var loginObj = new LoginResult()
                    {
                        type = "login", success = "true"
                    };
                    var incData = SerializationHelper.Deserialize <LoginObject>(strCommand);
                    try
                    {
                        if (ClsStatics.UsersStatic.ContainsKey(incData.name))
                        {
                            ClsStatics.UsersStatic.Remove(incData.name);
                            objSocket.name = incData.name;
                            ClsStatics.UsersStatic.Add(incData.name, objSocket);

                            objBuffer = ObjectHelper.GetObjectBuffer(loginObj);
                            objSocket.connection.SendAsync(
                                new ArraySegment <byte>(objBuffer.Item1, 0, objBuffer.Item2), result.MessageType,
                                result.EndOfMessage, CancellationToken.None);

                            Console.WriteLine($"Send Success Login For User {incData.name}");
                        }
                        else
                        {
                            loginObj.success = "false";
                            objSocket.name   = incData.name;
                            ClsStatics.UsersStatic.Add(incData.name, objSocket);
                            objBuffer = ObjectHelper.GetObjectBuffer(loginObj);
                            objSocket.connection.SendAsync(
                                new ArraySegment <byte>(objBuffer.Item1, 0, objBuffer.Item2), result.MessageType,
                                result.EndOfMessage, CancellationToken.None);
                            Console.WriteLine($"Send Success Login For User {incData.name}");
                        }
                    }
                    catch (Exception e)
                    {
                        objBuffer = ObjectHelper.GetObjectBuffer(loginObj);
                        objSocket.connection.SendAsync(
                            new ArraySegment <byte>(objBuffer.Item1, 0, objBuffer.Item2), result.MessageType,
                            result.EndOfMessage, CancellationToken.None);
                        Console.WriteLine($"Send Failed Login For User {incData.name}");
                    }
                }
                if (incType.type == ClsEnumeration.EnumCommandType.offer.ToString())
                {
                    var incData = SerializationHelper.Deserialize <OfferObject>(strCommand);
                    //for ex. UserA wants to call UserB
                    //if UserB exists then send him offer details
                    dynamic Dyncon = ClsStatics.UsersStatic[incData.name];
                    if (Dyncon != null)
                    {
                        var offResObj = new OfferResult()
                        {
                            type = "offer", offer = incData.offer, name = incData.Owner
                        };
                        Dyncon.otherName = incData.name;
                        objBuffer        = ObjectHelper.GetObjectBuffer(offResObj);
                        Dyncon.connection.SendAsync(new ArraySegment <byte>(objBuffer.Item1, 0, objBuffer.Item2),
                                                    result.MessageType, result.EndOfMessage, CancellationToken.None);
                        Console.WriteLine($"Sending offer from : {incData.Owner} to: {incData.name}");
                    }
                }
                if (incType.type == ClsEnumeration.EnumCommandType.candidate.ToString())
                {
                    lock (ClsStatics.MessageLockCandidate)
                    {
                        var     incData = SerializationHelper.Deserialize <CandidateObject>(strCommand);
                        dynamic Dyncon  = ClsStatics.UsersStatic[incData.name];
                        if (Dyncon != null)
                        {
                            var candidateResObj = new CandidateResult()
                            {
                                type = "candidate", candidate = incData.candidate
                            };
                            objBuffer = ObjectHelper.GetObjectBuffer(candidateResObj);
                            Dyncon.connection.SendAsync(new ArraySegment <byte>(objBuffer.Item1, 0, objBuffer.Item2),
                                                        result.MessageType, result.EndOfMessage, CancellationToken.None);
                            Console.WriteLine("Sending candidate to:", incData.name);
                        }
                    }
                }
                if (incType.type == ClsEnumeration.EnumCommandType.answer.ToString())
                {
                    var     incData = SerializationHelper.Deserialize <AnswerObject>(strCommand);
                    dynamic Dyncon  = ClsStatics.UsersStatic[incData.name];
                    Console.WriteLine($"Sending answer to: {incData.name}");
                    //for ex. UserB answers UserA
                    if (Dyncon != null)
                    {
                        var answerObj = new AnswerObject()
                        {
                            type = "answer", answer = incData.answer
                        };
                        objBuffer = ObjectHelper.GetObjectBuffer(answerObj);
                        Dyncon.connection.SendAsync(
                            new ArraySegment <byte>(objBuffer.Item1, 0, objBuffer.Item2), result.MessageType,
                            result.EndOfMessage, CancellationToken.None);
                    }
                }
                else if (incType.type == ClsEnumeration.EnumCommandType.leave.ToString())
                {
                    lock (ClsStatics.MessageLockCandidate)
                    {
                        var     incData = SerializationHelper.Deserialize <LoginObject>(strCommand);
                        dynamic Dyncon  = ClsStatics.UsersStatic[incData.name];
                        Dyncon.otherName = null;
                        Console.WriteLine(string.Format("Sending answer to: {0}", incData.name));
                        //for ex. UserB answers UserA

                        if (Dyncon != null)
                        {
                            var leaveObj = new BaseObject()
                            {
                                type = "leave"
                            };
                            objBuffer = ObjectHelper.GetObjectBuffer(leaveObj);
                            Dyncon.connection.SendAsync(
                                new ArraySegment <byte>(objBuffer.Item1, 0, objBuffer.Item2), result.MessageType,
                                result.EndOfMessage, CancellationToken.None);
                            ClsStatics.UsersStatic.Remove(incData.name);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            //await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), result.MessageType, result.EndOfMessage, CancellationToken.None);
        }
예제 #34
0
        public async Task <CandidateResult> QualifyCandidate(IProviderAgencyOwner agencyOwner, Guid candidateId,
                                                             CandidateQualifyInput input)
        {
            _logger.LogInformation(GetLogMessage("AO: {0}, CandidateId: {1}"), agencyOwner.OrganizationId, candidateId);

            var retVal = new CandidateResult()
            {
                CandidateId = candidateId
            };

            var candidate = await Repository
                            .Queryable()
                            .ForAgencyOwner(agencyOwner)
                            .FindById(candidateId)
                            .FirstAsync();

            if (candidate.Status != CandidateStatus.Qualified)
            {
                candidate.InjectFrom(input);
                candidate.ProjectManagerId             = input.ProjectManagerId;
                candidate.ProjectManagerOrganizationId = agencyOwner.OrganizationId;
                candidate.ObjectState = ObjectState.Modified;
                candidate.UpdatedById = _userInfo.UserId;
                candidate.Updated     = DateTimeOffset.UtcNow;
                candidate.Status      = CandidateStatus.Qualified;


                candidate.StatusTransitions.Add(new CandidateStatusTransition()
                {
                    ObjectState = ObjectState.Added,
                    Status      = CandidateStatus.Qualified
                });


                var records = Repository.Update(candidate, true);

                _logger.LogDebug(GetLogMessage("{0} results added"), records);

                if (records > 0)
                {
                    var individualBonusResult = await _individualBonusIntents.Create(new CreateBonusIntentOptions()
                    {
                        CandidateId = candidateId
                    });

                    var organizationBonusResult = await _organizationBonusIntents.Create(new CreateBonusIntentOptions()
                    {
                        CandidateId = candidateId
                    });


                    if (individualBonusResult.Succeeded && organizationBonusResult.Succeeded)
                    {
                        retVal.Succeeded = true;
                        await Task.Run(() =>
                        {
                            RaiseEvent(new CandidateQualifiedEvent
                            {
                                CandidateId = candidateId
                            });
                        });
                    }


                    retVal.Succeeded = true;
                    await Task.Run(() =>
                    {
                        RaiseEvent(new CandidateQualifiedEvent
                        {
                            CandidateId = candidateId
                        });
                    });
                }
            }
            else
            {
                _logger.LogDebug(GetLogMessage("Candidate is already qualified"));
            }

            return(retVal);
        }