internal IInterview FindInterview(IInterview i)
        {
            var query = repo.Interviews.AsQueryable();

            query = BuildFindInterviewQuery(i, query);

            return(FindAResult(query));
        }
        internal ICollection <Interview> FindMultipleInterviews(IInterview i)
        {
            var query = repo.Interviews.AsQueryable();

            query = BuildFindInterviewQuery(i, query);

            return(FindMultipleResults(query));
        }
        internal bool DeleteInterview(IInterview i)
        {
            EntityEntry entry = null;
            EntityState state = EntityState.Unchanged;

            entry = repo.Remove(i);

            state = CheckEntryState(state, entry);
            return(VerifyEntryState(state, EntityState.Deleted));
        }
        internal bool UpdateInterview(IInterview i)
        {
            EntityEntry entry = null;
            EntityState state = EntityState.Unchanged;

            entry = repo.Update(i);

            state = CheckEntryState(state, entry);
            return(VerifyEntryState(state, EntityState.Modified));
        }
        internal bool AddInterview(IInterview i)
        {
            EntityEntry entry = null;
            EntityState state = EntityState.Unchanged;

            entry = repo.Add(i);

            state = CheckEntryState(state, entry);
            return(VerifyEntryState(state, EntityState.Added));
        }
        private IQueryable <Interview> BuildFindInterviewQuery(IInterview i, IQueryable <Interview> query)
        {
            if (i.Interviewer != null)
            {
                if (!i.Interviewer.Email.IsNullOrEmpty())
                {
                    query = query.Where(x => x.Interviewer.Email.Contains(i.Interviewer.Email));
                }
                if (!i.Interviewer.Name.IsNullOrEmpty())
                {
                    query = query.Where(x => x.Interviewer.Name.Contains(i.Interviewer.Name));
                }
                if (!i.Interviewer.Department.IsNullOrEmpty())
                {
                    query = query.Where(x => x.Interviewer.Department.Contains(i.Interviewer.Department));
                }
            }

            if (i.Applicant != null)
            {
                if (!i.Applicant.Email.IsNullOrEmpty())
                {
                    query = query.Where(x => x.Applicant.Email.Contains(i.Applicant.Email));
                }
                if (!i.Applicant.Name.IsNullOrEmpty())
                {
                    query = query.Where(x => x.Applicant.Name.Contains(i.Applicant.Name));
                }
                if (!i.Applicant.Country.IsNullOrEmpty())
                {
                    query = query.Where(x => x.Applicant.Country.Contains(i.Applicant.Country));
                }
                if (i.Applicant.MailAttempts != default(int))
                {
                    query = query.Where(x => x.Applicant.MailAttempts == i.Applicant.MailAttempts);
                }
            }

            if (i.Appointment != null)
            {
                if (i.Appointment.From != default(DateTime))
                {
                    query = query.Where(x => x.Appointment.From.Date == i.Appointment.From.Date);
                }
                if (i.Appointment.To != default(DateTime))
                {
                    query = query.Where(x => x.Appointment.To.Date == i.Appointment.To.Date);
                }
            }
            return(query);
        }
示例#7
0
        private void CompareInterviewDate(IInterview interview)
        {
            if (interview.Date == null && interview.EndDate == null)
            {
                return;
            }

            var candidate = candidateRepository.Read(interview.Candidate);

            bool Intersection(IInterview x) => (interview.Id != x.Id) &&
            ((interview.Date > x.Date && interview.Date < x.EndDate) ||
             (interview.EndDate <x.EndDate && interview.EndDate> x.Date));

            var generalInterviews = candidate.GeneralInterviews.Where(Intersection);

            if (generalInterviews != null && generalInterviews.Count() != 0)
            {
                throw new Exception("Not valid time");
            }

            var techInterviews = candidate.TechInterviews.Where(Intersection);

            if (techInterviews != null && techInterviews.Count() != 0)
            {
                throw new Exception("Not valid time");
            }

            if (interview.Id == 0 && interview.Status == InterviewStatuses.Active)
            {
                return;
            }

            if (interview.Date > candidate.CustomerInterviewDate &&
                interview.Date < candidate.CustomerInterviewEndDate)
            {
                throw new Exception("Not valid time");
            }

            if (interview.EndDate < candidate.CustomerInterviewEndDate &&
                interview.EndDate > candidate.CustomerInterviewDate)
            {
                throw new Exception("Not valid time");
            }
        }
示例#8
0
        public IInterview SetNext(IInterview interviewee)
        {
            _nextInterview = interviewee;

            return(interviewee);
        }