コード例 #1
0
 public List <Interviewer> GetAll()
 {
     using (var dbContext = new AARPDbContext())
     {
         return(dbContext.Interviewers.ToList());
     }
 }
コード例 #2
0
 public List <Interviewer> SearchInteviewer(string key)
 {
     using (var dbContext = new AARPDbContext())
     {
         return(dbContext.Interviewers.Where(p => p.InterviewerName.ToLower().Contains(key.ToLower())).ToList());
     }
 }
コード例 #3
0
 public TEntity[] GetList(Expression <Func <TEntity, bool> > predicate)
 {
     using (var dbContext = new AARPDbContext())
     {
         return(dbContext.Set <TEntity>().Where(predicate).ToArray());
     }
 }
コード例 #4
0
        public TEntity[] AddRange(TEntity[] entities)
        {
            using (var dbContext = new AARPDbContext())
            {
                try
                {
                    dbContext.Set <TEntity>().AddRange(entities);
                    dbContext.SaveChanges();
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                          eve.Entry.Entity.GetType().Name, eve.Entry.State);
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                              ve.PropertyName, ve.ErrorMessage);
                        }
                    }
                    throw;
                }
            }

            return(entities);
        }
コード例 #5
0
 public TEntity Get(int key)
 {
     using (var dbContext = new AARPDbContext())
     {
         return(dbContext.Set <TEntity>().Find(key));
     }
 }
コード例 #6
0
        public void Execute()
        {
            var report = new InterviewsEvaluationReportEmail();

            using (var dbContext = new AARPDbContext())
            {
                var lastDate = DateTime.Now.AddDays(-7);

                report.InterviewReportItems = (from i in dbContext.Interviews
                                               join ivr in dbContext.Interviewers on i.InterviewerId equals ivr.Id
                                               join iw in dbContext.Interviewees on i.IntervieweeId equals iw.Id
                                               join st in dbContext.InterviewStages on i.InterviewStageId equals st.Id
                                               join sn in dbContext.Seniorities on i.SeniorityId equals sn.Id
                                               where i.Date >= lastDate
                                               orderby i.Date descending
                                               select new EvaluationReportItem
                {
                    interview = i,
                    interviewee = iw,
                    interviewer = ivr,
                    seniority = sn,
                    stage = st
                }).ToList();
            }

            BackgroundEmailService.Create().Send(report);
        }
コード例 #7
0
 public TEntity[] GetList()
 {
     using (var dbContext = new AARPDbContext())
     {
         return(dbContext.Set <TEntity>().ToArray());
     }
 }
コード例 #8
0
 public Reviewer GetByEmail(string email)
 {
     using (var dbContext = new AARPDbContext())
     {
         return(dbContext.Reviewers.FirstOrDefault(r => r.Email.ToLower().Contains(email.ToLower())));
     }
 }
コード例 #9
0
 public Interviewer GetById(int id)
 {
     using (var dbContext = new AARPDbContext())
     {
         return(dbContext.Interviewers.Where(p => p.Id == id).FirstOrDefault());
     }
 }
コード例 #10
0
        public static IntervieweeProfileViewModel GetIntervieweeProfile(int intervieweeId)
        {
            var result = new IntervieweeProfileViewModel();

            using (var dbContext = new AARPDbContext())
            {
                var interviewee = dbContext.Interviewees.FirstOrDefault(x => x.Id == intervieweeId);
                if (interviewee != null)
                {
                    var opening       = dbContext.JobPositions.FirstOrDefault(x => x.Id == interviewee.OpeningID);
                    var allInterviews = dbContext.Interviews.Where(x => x.IntervieweeId == intervieweeId).ToList();

                    result.IntervieweeName    = interviewee.Name;
                    result.IntervieweeID      = intervieweeId;
                    result.JobApplicationName = opening != null ? opening.Name : string.Empty;
                    if (allInterviews.Count > 0)
                    {
                        result.Interview1 = new IntervieweeResponseViewModel();
                        var interviewer1Id = allInterviews[0].InterviewerId;
                        result.Interview1.InterviewerName = dbContext.Interviewers.First(x => x.Id == interviewer1Id).InterviewerName;
                        result.Interview1.Survey          = GenerateSurveyResult(allInterviews[0]);
                    }
                    if (allInterviews.Count > 1)
                    {
                        result.Interview2 = new IntervieweeResponseViewModel();
                        var interviewer2Id = allInterviews[1].InterviewerId;
                        result.Interview2.InterviewerName = dbContext.Interviewers.First(x => x.Id == interviewer2Id).InterviewerName;
                        result.Interview2.Survey          = GenerateSurveyResult(allInterviews[1]);
                    }
                }
            }

            return(result);
        }
コード例 #11
0
        public static Models.Evaluations.Chart.Chart GetInterviewsChartData(DateRange period, int stageID = default(int))
        {
            using (var dbContext = new AARPDbContext())
            {
                var standingsResult = (from interview in dbContext.Interviews
                                       join ratings in dbContext.InterviewRatings on interview.RatingId equals ratings.Id
                                       where interview.Date >= period.dateFrom && interview.Date <= period.dateTo &&
                                       (stageID > 0 ? interview.InterviewStageId == stageID : true)

                                       select new
                {
                    interview.Id,
                    interview.RatingId,
                    ratings.Rating,
                }).Where(x => x.RatingId != 0).ToList();


                Models.Evaluations.Chart.Chart _chart = new Models.Evaluations.Chart.Chart();
                _chart.labels   = standingsResult.Select(x => x.Rating.ToString()).ToArray();
                _chart.datasets = new List <Datasets>();
                List <Datasets> _dataSet = new List <Datasets>();
                _dataSet.Add(new Datasets()
                {
                    label           = "Ratings",
                    data            = standingsResult.Select(x => x.RatingId).ToArray(),
                    backgroundColor = new string[] { "#9068be", "#e62739", "#3fb0ac", "ba9077", "6534ff" },
                    // borderColor = new string[] { "#FF0000", "#800000", "#808000"},
                    borderWidth = "1"
                });
                _chart.datasets = _dataSet;
                return(_chart);
            }
        }
コード例 #12
0
        public static InterviewsViewModel GetAllInterviewsList(InterviewsFiltersPostViewModel filters)
        {
            InterviewsViewModel result = new InterviewsViewModel();

            if (filters.selectedstages == null)
            {
                filters.selectedstages = new List <int>();
            }

            if (filters.selectedseniorities == null)
            {
                filters.selectedseniorities = new List <int>();
            }

            using (var dbContext = new AARPDbContext())
            {
                var interviewers = dbContext.Interviewers.ToList();
                var interviewees = dbContext.Interviewees.ToList();
                var stages       = dbContext.InterviewStages.ToList();
                var seniorities  = dbContext.Seniorities.ToList();
                var ratings      = dbContext.InterviewRatings.ToList();

                var interviews = dbContext.Interviews.Where(x => filters.selectedstages.Contains(x.InterviewStageId) &&
                                                            filters.selectedseniorities.Contains(x.SeniorityId) &&
                                                            (filters.dateFrom != null ? x.Date >= filters.dateFrom : true) &&
                                                            (filters.dateTo != null ? x.Date <= filters.dateTo : true)
                                                            );

                foreach (var interview in interviews)
                {
                    InterviewViewModel interviewVM = new InterviewViewModel();

                    var target = interviewers.FirstOrDefault(f => f.Id == interview.InterviewerId);

                    if (target != null)
                    {
                        interviewVM.Interviewer     = interviewers.Where(x => x.Id == interview.InterviewerId).First().InterviewerName;
                        interviewVM.Interviewee     = interviewees.Where(x => x.Id == interview.IntervieweeId).First().Name;
                        interviewVM.IntervieweeID   = interviewees.Where(x => x.Id == interview.IntervieweeId).First().Id;
                        interviewVM.InterviewDate   = interview.Date;
                        interviewVM.InterviewStage  = stages.Where(x => x.Id == interview.InterviewStageId).First().Stage;
                        interviewVM.InterviewStatus = interview.SurveyStatus;

                        var seniority = seniorities.FirstOrDefault(x => x.Id == interview.SeniorityId);

                        if (seniority != null)
                        {
                            interviewVM.Seniority = seniority.SeniorityName;
                        }

                        interviewVM.Rating = interview.RatingId > 0 ? ratings.Where(x => x.Id == interview.RatingId).First().Rating : 0;
                        result.Interviews.Add(interviewVM);
                    }
                }
            }

            return(result);
        }
コード例 #13
0
 public Reviewer[] GetWorkingReviewers(CommonConfigs commonConfigs)
 {
     using (var dbContext = new AARPDbContext())
     {
         return(dbContext.Reviewers
                .Where(rvr => rvr.IsInWorkingHours(commonConfigs.StartTimeOfDay, commonConfigs.EndTimeOfDay, commonConfigs.EnabledDays))
                .ToArray());
     }
 }
コード例 #14
0
        public TEntity Add(TEntity entity)
        {
            using (var dbContext = new AARPDbContext())
            {
                dbContext.Set <TEntity>().Add(entity);
                dbContext.SaveChanges();
            }

            return(entity);
        }
コード例 #15
0
        public PartialViewResult GetInterviewsFilter(int?interviewerId)
        {
            using (var context = new AARPDbContext())
            {
                ViewBag.Stages = context.InterviewStages.Select(s => new InterviewFilterItem
                {
                    Id    = s.Id,
                    Value = s.Stage,
                    Count = context.Interviews.Count(c => c.InterviewerId == interviewerId && c.InterviewStageId == s.Id)
                }).ToList();

                ViewBag.Seniorities = context.Seniorities.Select(s => new InterviewFilterItem
                {
                    Id    = s.Id,
                    Value = s.SeniorityName,
                    Count = context.Interviews.Count(c => c.InterviewerId == interviewerId && c.SeniorityId == s.Id)
                }).ToList();

                ViewBag.Technologies = context.InterviewTechnologies.Select(s => new InterviewFilterItem
                {
                    Id    = s.Id,
                    Value = s.Technology,
                    Count = context.Interviews.Count(c => c.InterviewerId == interviewerId && c.TechnologyId == s.Id)
                }).ToList();

                ViewBag.TotalNumber = context.Interviews.Count(c => c.InterviewerId == interviewerId);

                var lastInterviews = (from i in context.Interviews.Where(w => w.InterviewerId == interviewerId).OrderByDescending(o => o.Date)
                                      join r in context.InterviewRatings on i.RatingId equals r.Id
                                      select new
                {
                    Interview = i,
                    Rating = r
                }).Take(10).ToList();

                ViewBag.PerformanceInfo = new InterviewerPerformanceViewModel()
                {
                    Name      = context.Interviewers.FirstOrDefault(f => f.Id == interviewerId).InterviewerName,
                    AvgRating = lastInterviews.Count > 0 ? lastInterviews.Average(a => a.Rating.Rating) : 0,
                    Standings = lastInterviews.Count > 0 ? lastInterviews.GroupBy(g => g.Rating.Rating).Select(s => new StandingsInterviewRatingViewModel()
                    {
                        Rating      = s.Key,
                        RatingCount = s.Count()
                    }).ToList() : null,
                    Attitude = new StandingsAttitudeViewModel()
                    {
                        Negative = lastInterviews.Count(t => t.Interview.InterviewerAttitude.Trim().Equals(DbConstants.AttitudeNegative)) / 10.0,
                        Neutral  = lastInterviews.Count(t => t.Interview.InterviewerAttitude.Trim().Equals(DbConstants.AttitudeNeutral)) / 10.0,
                        Positive = lastInterviews.Count(t => t.Interview.InterviewerAttitude.Trim().Equals(DbConstants.AttitudePositive)) / 10.0,
                    }
                };
            }

            return(PartialView("Interviews/_GeneralStats"));
        }
コード例 #16
0
        public TEntity Update(TEntity entity)
        {
            using (var dbContext = new AARPDbContext())
            {
                dbContext.Set <TEntity>().Attach(entity);
                dbContext.Entry(entity).State = EntityState.Modified;
                dbContext.SaveChanges();
            }

            return(entity);
        }
コード例 #17
0
        public static List <StandingsInterviewersViewModel> GetAllStandings(DateRange period)
        {
            List <StandingsInterviewersViewModel> standings = null;

            using (var dbContext = new AARPDbContext())
            {
                var standingsResult =
                    (from interviewer in dbContext.Interviewers
                     join interview in dbContext.Interviews on interviewer.Id equals interview.InterviewerId
                     join ratings in dbContext.InterviewRatings on interview.RatingId equals ratings.Id
                     join istage in dbContext.InterviewStages on interview.InterviewStageId equals istage.Id
                     where (period.dateFrom == null || interview.Date >= period.dateFrom) &&
                     (period.dateTo == null || interview.Date >= period.dateTo)
                     select new
                {
                    interviewer.Id,
                    interviewer.InterviewerName,
                    istage.Stage,
                    ratings.Rating,
                    ratingId = ratings.Id,
                    InterviewerAttitude = interview.InterviewerAttitude.Trim(),
                });

                standings = standingsResult.GroupBy(g => g.Id).Select(s => new StandingsInterviewersViewModel()
                {
                    InterviewerId   = s.Key,
                    AvgRating       = s.Average(a => a.Rating),
                    Name            = s.FirstOrDefault() == null ? "" : s.FirstOrDefault().InterviewerName,
                    GeneralAttitude = new StandingsAttitudeViewModel()
                    {
                        Negative = (double)s.Count(w => w.InterviewerAttitude.Equals(DbConstants.AttitudeNegative)) / s.Count(),
                        Neutral  = (double)s.Count(w => w.InterviewerAttitude.Equals(DbConstants.AttitudeNeutral)) / s.Count(),
                        Positive = (double)s.Count(w => w.InterviewerAttitude.Equals(DbConstants.AttitudePositive)) / s.Count(),
                    },
                    InterviewStages = s.GroupBy(g => g.Stage).Select(st => new StandingsInterviewStageViewModel()
                    {
                        AttitudeStat = new StandingsAttitudeViewModel()
                        {
                            Negative = (double)st.Count(w => w.InterviewerAttitude.Equals(DbConstants.AttitudeNegative)) / st.Count(),
                            Neutral  = (double)st.Count(w => w.InterviewerAttitude.Equals(DbConstants.AttitudeNeutral)) / st.Count(),
                            Positive = (double)st.Count(w => w.InterviewerAttitude.Equals(DbConstants.AttitudePositive)) / st.Count(),
                        },
                        StageName = st.Key,
                        Ratings   = st.GroupBy(g => g.Rating).Select(rt => new StandingsInterviewRatingViewModel()
                        {
                            RatingCount = rt.Count(),
                            Rating      = rt.Key
                        }).ToList(),
                    }).ToList(),
                }).ToList();
            }

            return(standings);
        }
コード例 #18
0
        public static bool SetAdminSettings(List <AdminSettingsViewModel> saveModel)
        {
            using (var dbContext = new AARPDbContext())
            {
                var settings = dbContext.AdminSettings.ToList();

                var techSettings1 = settings.Where(x => x.Id == 1).FirstOrDefault();
                if (techSettings1 != null)
                {
                    techSettings1.EmailTimer      = saveModel[0].EmailTimer;
                    techSettings1.FeedbackMessage = saveModel[0].FeedbackMessage;
                    techSettings1.ReminderID      = saveModel[0].EnableReminder;
                    techSettings1.ReminderMessage = saveModel[0].ReminderMessage;
                    dbContext.SaveChanges();
                }
                else
                {
                    techSettings1 = new AdminSetting()
                    {
                        Id              = 1,
                        EmailTimer      = saveModel[0].EmailTimer,
                        FeedbackMessage = saveModel[0].FeedbackMessage,
                        ReminderID      = saveModel[0].EnableReminder,
                        ReminderMessage = saveModel[0].ReminderMessage
                    };
                    dbContext.AdminSettings.Add(techSettings1);
                    dbContext.SaveChanges();
                }
                var techSettings2 = settings.Where(x => x.Id == 2).FirstOrDefault();
                if (techSettings2 != null)
                {
                    techSettings2.EmailTimer      = saveModel[1].EmailTimer;
                    techSettings2.FeedbackMessage = saveModel[1].FeedbackMessage;
                    techSettings2.ReminderID      = saveModel[1].EnableReminder;
                    techSettings2.ReminderMessage = saveModel[1].ReminderMessage;
                    dbContext.SaveChanges();
                }
                else
                {
                    techSettings2 = new AdminSetting()
                    {
                        Id              = 2,
                        EmailTimer      = saveModel[1].EmailTimer,
                        FeedbackMessage = saveModel[1].FeedbackMessage,
                        ReminderID      = saveModel[1].EnableReminder,
                        ReminderMessage = saveModel[1].ReminderMessage
                    };
                    dbContext.AdminSettings.Add(techSettings2);
                    dbContext.SaveChanges();
                }
            }

            return(true);
        }
コード例 #19
0
        public ActionResult Interviewee(int id)
        {
            using (var dbContext = new AARPDbContext())
            {
                ViewBag.InterviewLengths = dbContext.InterviewLengths.ToList();
            }

            var profile = EvaluationInterviewee.GetIntervieweeProfile(id);

            return(View(profile));
        }
コード例 #20
0
 public void Delete(int key)
 {
     using (var dbContext = new AARPDbContext())
     {
         var entity = dbContext.Set <TEntity>().Find(key);
         if (entity != null)
         {
             dbContext.Set <TEntity>().Remove(entity);
             dbContext.SaveChanges();
         }
     }
 }
コード例 #21
0
        public int GetNextId()
        {
            using (var dbContext = new AARPDbContext())
            {
                if (dbContext.Reviewers.Count() == 0)
                {
                    return(1);
                }

                return(dbContext.Reviewers.Select(t => t.Id).Max() + 1);
            }
        }
コード例 #22
0
        public void SendEvaluationInvitationEmail(int InterviewerID, int IntervieweeID)
        {
            using (var dbContext = new AARPDbContext())
            {
                var Interviewee = dbContext.Interviewees.Where(x => x.Id == IntervieweeID).First();
                var Interviewer = dbContext.Interviewers.Where(x => x.Id == InterviewerID).First();
                var email       = new EvaluationInvitationEmail()
                {
                    interviewer    = Interviewer,
                    interviewee    = Interviewee,
                    EvaluationLink = GenerateEvaluationLink(IntervieweeID, InterviewerID)
                };

                BackgroundEmailService.Create().Send(email);
            }
        }
コード例 #23
0
        private static void SendSurveyEmails()
        {
            using (var dbContext = new AARPDbContext())
            {
                var newReviews = dbContext.Interviews.Where(x => x.SurveyStatus.Trim() == "New" && x.StatusId == 0).ToList();
                EvaluationsEmailService service = new EvaluationsEmailService();

                foreach (var review in newReviews)
                {
                    service.SendEvaluationInvitationEmail(review.InterviewerId, review.IntervieweeId);
                    review.StatusId               = 1;
                    review.SurveyStatus           = "EmailSent";
                    dbContext.Entry(review).State = System.Data.Entity.EntityState.Modified;
                }
                dbContext.SaveChanges();
            }
        }
コード例 #24
0
        public static StatsSubHeaderViewModel GenerateStatsSubHeader(DateTime startDate, DateTime endDate)
        {
            StatsSubHeaderViewModel result = new StatsSubHeaderViewModel();

            using (var dbContext = new AARPDbContext())
            {
                result.TotalInterviewers       = dbContext.Interviewers.Count();
                result.TotalNumberOfInterviews = dbContext.Interviews.Where(x => x.Date >= startDate && x.Date <= endDate).Count();
                result.TotalInterview1         = dbContext.Interviews.Where(x => x.Date >= startDate && x.Date <= endDate && x.InterviewStageId == 1).Count();
                result.TotalInterview2         = dbContext.Interviews.Where(x => x.Date >= startDate && x.Date <= endDate && x.InterviewStageId == 2).Count();
                result.TotalInterviewers       = dbContext.Interviews.Where(x => x.Date >= startDate && x.Date <= endDate).Select(y => y.InterviewerId).Distinct().Count();
                result.PositiveImpression      = dbContext.Interviews.Where(x => x.Date >= startDate && x.Date <= endDate && x.InterviewerAttitude == DbConstants.AttitudePositive).Count();
                result.NeutralImpression       = dbContext.Interviews.Where(x => x.Date >= startDate && x.Date <= endDate && x.InterviewerAttitude == DbConstants.AttitudeNeutral).Count();
                result.NegativeImpression      = dbContext.Interviews.Where(x => x.Date >= startDate && x.Date <= endDate && x.InterviewerAttitude == DbConstants.AttitudeNegative).Count();
            }

            return(result);
        }
コード例 #25
0
        /// <summary>
        /// Sync Interviewers
        /// </summary>
        private static void SyncInterviewers()
        {
            var webApiClient = DiContainers.Global.Resolve <IWebApiClient>();

            var apiInterviewers = webApiClient.GetInterviewers();

            if (apiInterviewers == null || apiInterviewers.Count == 0)
            {
                return;
            }
            using (var dbContext = new AARPDbContext())
            {
                try
                {
                    foreach (var apiInterviewer in apiInterviewers)
                    {
                        foreach (var reviewer in apiInterviewer.Feedback)
                        {
                            var currentInterviewer =
                                dbContext.Interviewers.FirstOrDefault(x => x.Id.ToString() == reviewer.SubmittedBy.Id);
                            if (currentInterviewer != null)
                            {
                                continue;
                            }

                            currentInterviewer = new Interviewer
                            {
                                Id = int.Parse(reviewer.SubmittedBy.Id),
                                InterviewerName  = reviewer.SubmittedBy.Name ?? string.Empty,
                                InterviewerEmail = reviewer.SubmittedBy.Email ?? string.Empty
                            };

                            dbContext.Interviewers.Add(currentInterviewer);
                            dbContext.SaveChanges();
                        }
                    }
                }
                catch (Exception e)
                {
                    Logger.Error(e.Message, e);
                }
            }
        }
コード例 #26
0
        public static Models.Evaluations.Chart.Chart GetRatingChartData(DateRange period, int interviewerID = default(int))
        {
            List <StandingsInterviewRatingViewModel> OverallRatings = new List <StandingsInterviewRatingViewModel>();

            using (var dbContext = new AARPDbContext())
            {
                var standingsResult = (from interview in dbContext.Interviews
                                       join ratings in dbContext.InterviewRatings on interview.RatingId equals ratings.Id
                                       where interview.Date >= period.dateFrom && interview.Date <= period.dateTo &&
                                       (interviewerID > 0 ? interview.Id == interviewerID : true)
                                       select new
                {
                    interview.Id,
                    interview.RatingId,
                    ratings.Rating,
                }).Where(x => x.RatingId != 0).ToList();

                var test = standingsResult.GroupBy(x => x.RatingId).ToList();
                foreach (var item in test)
                {
                    OverallRatings.Add(new StandingsInterviewRatingViewModel()
                    {
                        Rating = item.Key, RatingCount = item.Count()
                    });
                }
            }

            Models.Evaluations.Chart.Chart _chart = new Models.Evaluations.Chart.Chart();
            _chart.labels   = OverallRatings.Select(x => x.Rating.ToString()).ToArray();
            _chart.datasets = new List <Datasets>();
            List <Datasets> _dataSet = new List <Datasets>();

            _dataSet.Add(new Datasets()
            {
                label           = "Ratings",
                data            = OverallRatings.Select(x => x.RatingCount).ToArray(),
                backgroundColor = new string[] { "#9068be", "#e62739", "#3fb0ac", "ba9077", "6534ff" },
                // borderColor = new string[] { "#FF0000", "#800000", "#808000"},
                borderWidth = "1"
            });
            _chart.datasets = _dataSet;
            return(_chart);
        }
コード例 #27
0
        /// <summary>
        /// Sync Interviewees
        /// </summary>
        private static void SyncInterviewees()
        {
            var webApiClient = DiContainers.Global.Resolve <IWebApiClient>();

            var apiInterviewees = webApiClient.GetInterviewees();

            if (apiInterviewees == null || apiInterviewees.Count == 0)
            {
                return;
            }
            using (var dbContext = new AARPDbContext())
            {
                try
                {
                    foreach (var apiInterviewee in apiInterviewees)
                    {
                        var currentInterview = dbContext.Interviewees.FirstOrDefault(x => x.Id.ToString() == apiInterviewee.Id);

                        if (currentInterview != null)
                        {
                            continue;
                        }


                        var interviewee = new Interviewee
                        {
                            Id        = int.Parse(apiInterviewee.Id),
                            Name      = apiInterviewee.GetFullName(),
                            Email     = apiInterviewee.Email,
                            OpeningID = apiInterviewee.OpeningID,
                            StageID   = apiInterviewee.StageID
                        };

                        dbContext.Interviewees.Add(interviewee);
                        dbContext.SaveChanges();
                    }
                }
                catch (Exception e)
                {
                    Logger.Error(e.Message, e);
                }
            }
        }
コード例 #28
0
        public static Models.Evaluations.Chart.Chart GetLengthChartData(DateRange period, int interviewerID = default(int))
        {
            List <StatsLengthViewModel> OverallLengths = new List <StatsLengthViewModel>();

            using (var dbContext = new AARPDbContext())
            {
                var standingsResult = (from interview in dbContext.Interviews
                                       join length in dbContext.InterviewLengths on interview.InterviewLengthId equals length.Id
                                       where interview.Date >= period.dateFrom && interview.Date <= period.dateTo &&
                                       (interviewerID > 0 ? interview.Id == interviewerID : true)
                                       select new
                {
                    interview.InterviewLengthId,
                    interview.Id,
                    length.Length,
                }).Where(x => x.InterviewLengthId != 0).ToList();

                var groupedLenghts = standingsResult.GroupBy(x => x.Length).ToList();
                foreach (var item in groupedLenghts)
                {
                    OverallLengths.Add(new StatsLengthViewModel()
                    {
                        Length = item.Key.Trim(), Percent = item.Count()
                    });
                }
            }

            Models.Evaluations.Chart.Chart _chart = new Models.Evaluations.Chart.Chart();
            _chart.labels   = OverallLengths.Select(x => x.Length.ToString()).ToArray();
            _chart.datasets = new List <Datasets>();
            List <Datasets> _dataSet = new List <Datasets>();

            _dataSet.Add(new Datasets()
            {
                label           = "Length",
                data            = OverallLengths.Select(x => (int)Math.Round(x.Percent)).ToArray(),
                backgroundColor = new string[] { "#9068be", "#e62739", "#3fb0ac", "ba9077", "6534ff" },
                // borderColor = new string[] { "#FF0000", "#800000", "#808000"},
                borderWidth = "1"
            });
            _chart.datasets = _dataSet;
            return(_chart);
        }
コード例 #29
0
        public static TConfigs GetConfigs <TConfigs>()
            where TConfigs : ConfigSectionWebApi
        {
            AARP.Models.Configuration cnfgEntity = null;
            var key = "RecruiterBoxConfigs";

            using (var dbContext = new AARPDbContext())
            {
                cnfgEntity = dbContext.Configurations.FirstOrDefault(cfg => cfg.Key == key);
            }

            if (cnfgEntity != null)
            {
                return(JsonConvert.DeserializeObject <TConfigs>(cnfgEntity.Value));
            }
            else
            {
                return(Activator.CreateInstance <TConfigs>());
            }
        }
コード例 #30
0
        /// <summary>
        /// Sync Users
        /// </summary>
        private static void SyncUsers()
        {
            try
            {
                var webApiClient = DiContainers.Global.Resolve <IWebApiClient>();

                var users = webApiClient.GetUsers();

                using (var dbContext = new AARPDbContext())
                {
                    foreach (var user in users)
                    {
                        if (user.Disabled)
                        {
                            continue;
                        }

                        var currentInterviewer = dbContext.Interviewers.FirstOrDefault(x => x.Id.ToString() == user.Id);
                        if (currentInterviewer != null)
                        {
                            continue;
                        }


                        currentInterviewer = new Interviewer
                        {
                            Id = int.Parse(user.Id),
                            InterviewerName  = user.Name ?? string.Empty,
                            InterviewerEmail = user.Emails.Count > 0 ? user.Emails[0] : string.Empty
                        };

                        dbContext.Interviewers.Add(currentInterviewer);
                        dbContext.SaveChanges();
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e.Message, e);
            }
        }