public async Task <IActionResult> CreateOnline(CreateOnlineInterviewBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var applicant = this.applicants.All().FirstOrDefault(a => a.Id == model.ApplicantId);

            var test = this.tests.GetById(model.TestId);

            if (applicant == null || test == null)
            {
                return(BadRequest());
            }

            await this.interviews.CreateOnline(model);

            var testLink = test.Url;

            var subject = EmailSubject;

            var message = String.Format(EmailMessage, testLink);

            //await emailSender.SendEmailAsync(applicant.Email, subject, message);

            TempData.AddSuccessMessage(String.Format(SendTestMessage, test.Name, applicant.Email));

            return(RedirectToAction(nameof(Index)));
        }
Beispiel #2
0
        public async Task CreateOnline(CreateOnlineInterviewBindingModel model)
        {
            var applicant = await this.DbContext.Applicants.FirstOrDefaultAsync(a => a.Id == model.ApplicantId);

            var test = await this.DbContext.Tests.FirstOrDefaultAsync(t => t.Id == model.TestId);

            if (applicant == null || test == null)
            {
                throw new InvalidOperationException("Invalid Identity details.");
            }

            var interview = new Interview()
            {
                ApplicantId = model.ApplicantId,
                TestId      = model.TestId,
                Applicant   = applicant,
                Test        = test,
                StartTime   = DateTime.UtcNow.ToLocalTime(),
                EndTime     = null
            };

            await this.DbContext.Interviews.AddAsync(interview);

            await this.DbContext.SaveChangesAsync();
        }
Beispiel #3
0
        public async Task SetStatusInterview_WithProperStatus_ShouldSetCorrectly()
        {
            //Arrange

            var applicantId        = 1;
            var applicantFirstName = "New applicant firstName";
            var applicantLastName  = "New applicant lastName";

            var testId          = 1;
            var testDescription = "Description";
            var testUrl         = "https://www.mysite.bg/";
            var ResultUrl       = "https://www.resultMyTest.bg/";

            var applicantModel = new CreateApplicantBindingModel()
            {
                Id        = applicantId,
                FirstName = applicantFirstName,
                LastName  = applicantLastName,
            };

            await this.applicants.Create(applicantModel);

            var testModel = new InterviewerTestBindingModel()
            {
                Id          = testId,
                Description = testDescription,
                Url         = testUrl
            };

            await this.tests.Create(testModel);

            var interviewModel = new CreateOnlineInterviewBindingModel()
            {
                Id          = 1,
                ApplicantId = applicantModel.Id,
                TestId      = testModel.Id
            };

            await this.interviews.CreateOnline(interviewModel);

            var setResultModel = new AdminSetApplicantTestResult()
            {
                ApplicantId = applicantModel.Id,
                InterviewId = interviewModel.Id,
                ResultUrl   = ResultUrl
            };

            //Act

            await this.interviews.SetTestResult(setResultModel);

            //Assert

            var interview = this.dbContext.Interviews.First();

            Assert.AreEqual(ResultUrl, interview.Result.ResultUrl);
        }
        public async Task CreateInterview_WithNullInterview_ShouldThrowException()
        {
            //Arrange

            CreateOnlineInterviewBindingModel interviewModel = null;

            //Act
            Func <Task> createInterview = () => this.interviews.CreateOnline(interviewModel);

            //Assert
            await Assert.ThrowsExceptionAsync <InvalidOperationException>(createInterview);
        }
        public async Task CreateInterview_WithProperInterview_ShouldCreateCorrectly()
        {
            //Arrange

            var applicantId        = 1;
            var applicantFirstName = "New applicant firstName";
            var applicantLastName  = "New applicant lastName";

            var testId          = 1;
            var testDescription = "Description";
            var testUrl         = "https://www.mysite.bg/";

            var applicantModel = new CreateApplicantBindingModel()
            {
                Id        = applicantId,
                FirstName = applicantFirstName,
                LastName  = applicantLastName,
            };

            await this.applicants.Create(applicantModel);

            var testModel = new InterviewerTestBindingModel()
            {
                Id          = testId,
                Description = testDescription,
                Url         = testUrl
            };

            await this.tests.Create(testModel);

            var interviewModel = new CreateOnlineInterviewBindingModel()
            {
                ApplicantId = applicantModel.Id,
                TestId      = testModel.Id
            };

            //Act
            await this.interviews.CreateOnline(interviewModel);

            //Assert

            var interview = this.dbContext.Interviews.First();

            Assert.AreEqual(applicantModel.Id, interview.ApplicantId);
            Assert.AreEqual(testModel.Id, interview.TestId);
        }
        public async Task OnlineInterviewDetails_WithInterviewId_ShouldReturnInterview()
        {
            //Arrange

            var applicantId        = 1;
            var applicantFirstName = "New applicant firstName";
            var applicantLastName  = "New applicant lastName";

            var testId          = 1;
            var testDescription = "Description";
            var testUrl         = "https://www.mysite.bg/";

            var applicantModel = new CreateApplicantBindingModel()
            {
                Id        = applicantId,
                FirstName = applicantFirstName,
                LastName  = applicantLastName,
            };

            await this.applicants.Create(applicantModel);

            var testModel = new InterviewerTestBindingModel()
            {
                Id          = testId,
                Description = testDescription,
                Url         = testUrl
            };

            await this.tests.Create(testModel);

            var interviewModel = new CreateOnlineInterviewBindingModel()
            {
                Id          = 1,
                ApplicantId = applicantModel.Id,
                TestId      = testModel.Id
            };

            await this.interviews.CreateOnline(interviewModel);

            //Act
            var interview = this.interviews.OnlineDetails(1);

            //Assert

            Assert.AreEqual(1, interview.Id);
        }
        public async Task OnlineInterviewDetails_WithNotExistingInterview_ShouldThrowException()
        {
            //Arrange

            var applicantId        = 1;
            var applicantFirstName = "New applicant firstName";
            var applicantLastName  = "New applicant lastName";

            var testId          = 1;
            var testDescription = "Description";
            var testUrl         = "https://www.mysite.bg/";

            var applicantModel = new CreateApplicantBindingModel()
            {
                Id        = applicantId,
                FirstName = applicantFirstName,
                LastName  = applicantLastName,
            };

            await this.applicants.Create(applicantModel);

            var testModel = new InterviewerTestBindingModel()
            {
                Id          = testId,
                Description = testDescription,
                Url         = testUrl
            };

            await this.tests.Create(testModel);

            var interviewModel = new CreateOnlineInterviewBindingModel()
            {
                Id          = 1,
                ApplicantId = applicantModel.Id,
                TestId      = testModel.Id
            };

            await this.interviews.CreateOnline(interviewModel);

            //Act
            Func <Task> interview = () => this.interviews.OnlineDetails(2);

            //Assert
            await Assert.ThrowsExceptionAsync <InvalidOperationException>(interview);
        }