private IEnumerable <ParticipantPersonSevisCommStatus> DoSendToSevis(ParticipantsToBeSentToSevis model, IEnumerable <ParticipantSevisSubmissionInfo> submissions) { var now = DateTimeOffset.UtcNow; var addedParticipantStatuses = new List <ParticipantPersonSevisCommStatus>(); foreach (var submission in submissions) { if (submission.IsQueuedToSubmit || submission.IsQueuedToValidate) { var newStatus = new ParticipantPersonSevisCommStatus { ParticipantId = submission.ParticipantId, AddedOn = now, SevisOrgId = model.SevisOrgId, SevisUsername = model.SevisUsername, PrincipalId = model.Audit.User.Id }; if (submission.IsQueuedToSubmit) { newStatus.SevisCommStatusId = SevisCommStatus.QueuedToSubmit.Id; } else if (submission.IsQueuedToValidate) { newStatus.SevisCommStatusId = SevisCommStatus.QueuedToValidate.Id; } else { throw new NotSupportedException("The submission type is not supported."); } Context.ParticipantPersonSevisCommStatuses.Add(newStatus); addedParticipantStatuses.Add(newStatus); } } return(addedParticipantStatuses); }
public void TestCreateGetParticipantPersonSevisCommStatusesByParticipantIdQuery_Filtered() { var userAccount = new UserAccount { PrincipalId = 100, DisplayName = "display name", EmailAddress = "email" }; var participant = new Participant { ParticipantId = 1, ProjectId = 100 }; var participantPerson = new ParticipantPerson { ParticipantId = participant.ParticipantId, Participant = participant }; participant.ParticipantPerson = participantPerson; var sevisCommStatus = new SevisCommStatus { SevisCommStatusId = 500, SevisCommStatusName = "sevis comm status name" }; var status = new ParticipantPersonSevisCommStatus { Id = 1, AddedOn = DateTimeOffset.UtcNow, BatchId = "batchId", ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, PrincipalId = userAccount.PrincipalId, SevisCommStatus = sevisCommStatus, SevisCommStatusId = sevisCommStatus.SevisCommStatusId, SevisOrgId = "sevis org Id", SevisUsername = "******" }; context.UserAccounts.Add(userAccount); context.Participants.Add(participant); context.ParticipantPersons.Add(participantPerson); context.SevisCommStatuses.Add(sevisCommStatus); context.ParticipantPersonSevisCommStatuses.Add(status); var defaultSorter = new ExpressionSorter <ParticipantPersonSevisCommStatusDTO>(x => x.AddedOn, SortDirection.Descending); var filter = new ExpressionFilter <ParticipantPersonSevisCommStatusDTO>(x => x.BatchId, ComparisonType.Equal, status.BatchId); var queryOperator = new QueryableOperator <ParticipantPersonSevisCommStatusDTO>(0, 1, defaultSorter); queryOperator.Filters.Add(filter); var results = ParticipantPersonsSevisQueries.CreateGetParticipantPersonSevisCommStatusesByParticipantIdQuery(context, participant.ProjectId, participant.ParticipantId, queryOperator); Assert.AreEqual(1, results.Count()); var firstResult = results.First(); Assert.AreEqual(status.Id, firstResult.Id); }
public void TestCreateGetSevisGroupedParticipantsQuery_CheckProperties() { var project = new Project { ProjectId = 1 }; var participant = new Participant { ParticipantId = 10, ProjectId = project.ProjectId, Project = project }; var participantPerson = new ParticipantPerson { ParticipantId = participant.ParticipantId, Participant = participant, SevisId = "sevis id" }; participant.ParticipantPerson = participantPerson; var status = new ParticipantPersonSevisCommStatus { Id = 1, AddedOn = DateTimeOffset.Now, ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, SevisCommStatusId = SevisCommStatus.QueuedToSubmit.Id, SevisOrgId = "org", SevisUsername = "******" }; participantPerson.ParticipantPersonSevisCommStatuses.Add(status); context.Projects.Add(project); context.ParticipantPersons.Add(participantPerson); context.Participants.Add(participant); context.ParticipantPersonSevisCommStatuses.Add(status); var results = SevisBatchProcessingQueries.CreateGetSevisGroupedParticipantsQuery(context).ToList(); Assert.AreEqual(1, results.Count); var firstResult = results.First(); Assert.AreEqual(status.SevisOrgId, firstResult.SevisOrgId); Assert.AreEqual(status.SevisUsername, firstResult.SevisUsername); Assert.AreEqual(1, firstResult.Participants.Count()); var firstParticipant = firstResult.Participants.First(); Assert.AreEqual(participant.ParticipantId, firstParticipant.ParticipantId); Assert.AreEqual(project.ProjectId, firstParticipant.ProjectId); Assert.AreEqual(participantPerson.SevisId, firstParticipant.SevisId); Assert.AreEqual(status.SevisCommStatusId, firstParticipant.SevisCommStatusId); }
/// <summary> /// Adds a SevisCommStatus for the ParticipantPerson /// </summary> /// <param name="sevisCommStatusId"></param> /// <param name="participantId"></param> /// <param name="userId"></param> private void AddSevisCommStatus(int sevisCommStatusId, int participantId, int userId) { var status = new ParticipantPersonSevisCommStatus(); status.SevisCommStatusId = sevisCommStatusId; status.ParticipantId = participantId; status.PrincipalId = userId; status.AddedOn = DateTimeOffset.Now; Context.ParticipantPersonSevisCommStatuses.Add(status); }
public void TestCreateGetParticipantPersonsByBatchId_EnsureDistinct() { var batchId = "batchId"; var participantPerson = new ParticipantPerson { ParticipantId = 1 }; var readyToSubmit = new ParticipantPersonSevisCommStatus { Id = 1, SevisCommStatusId = SevisCommStatus.ReadyToSubmit.Id, ParticipantPerson = participantPerson, ParticipantId = participantPerson.ParticipantId }; var queuedToSubmit = new ParticipantPersonSevisCommStatus { Id = 2, SevisCommStatusId = SevisCommStatus.QueuedToSubmit.Id, ParticipantPerson = participantPerson, ParticipantId = participantPerson.ParticipantId }; var pendingSevisSend = new ParticipantPersonSevisCommStatus { Id = 3, SevisCommStatusId = SevisCommStatus.PendingSevisSend.Id, ParticipantPerson = participantPerson, ParticipantId = participantPerson.ParticipantId, BatchId = batchId }; var otherBatchCommStatus = new ParticipantPersonSevisCommStatus { Id = 3, SevisCommStatusId = SevisCommStatus.SentToDhs.Id, ParticipantPerson = participantPerson, ParticipantId = participantPerson.ParticipantId, BatchId = batchId }; participantPerson.ParticipantPersonSevisCommStatuses.Add(readyToSubmit); participantPerson.ParticipantPersonSevisCommStatuses.Add(queuedToSubmit); participantPerson.ParticipantPersonSevisCommStatuses.Add(pendingSevisSend); participantPerson.ParticipantPersonSevisCommStatuses.Add(otherBatchCommStatus); context.ParticipantPersons.Add(participantPerson); context.ParticipantPersonSevisCommStatuses.Add(readyToSubmit); context.ParticipantPersonSevisCommStatuses.Add(queuedToSubmit); context.ParticipantPersonSevisCommStatuses.Add(pendingSevisSend); context.ParticipantPersonSevisCommStatuses.Add(otherBatchCommStatus); var results = SevisBatchProcessingQueries.CreateGetParticipantPersonsByBatchId(context, batchId).ToList(); Assert.AreEqual(1, results.Count); Assert.IsTrue(Object.ReferenceEquals(participantPerson, results.First())); }
private ParticipantPersonSevisCommStatus AddParticipantPersonSevisCommStatus(int participantId, int commStatusId) { var status = new ParticipantPersonSevisCommStatus { AddedOn = DateTimeOffset.UtcNow, ParticipantId = participantId, SevisCommStatusId = commStatusId }; this.Context.ParticipantPersonSevisCommStatuses.Add(status); return(status); }
public void TestCreateGetSevisGroupedParticipantsQuery_CheckLatestSevisCommStatus() { var project = new Project { ProjectId = 1 }; var participant = new Participant { ParticipantId = 10, ProjectId = project.ProjectId, Project = project }; var participantPerson = new ParticipantPerson { ParticipantId = participant.ParticipantId, Participant = participant, SevisId = "sevis id" }; participant.ParticipantPerson = participantPerson; var status1 = new ParticipantPersonSevisCommStatus { Id = 1, AddedOn = DateTimeOffset.Now.AddDays(-1.0), ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, SevisCommStatusId = SevisCommStatus.ReadyToSubmit.Id }; var status2 = new ParticipantPersonSevisCommStatus { Id = 2, AddedOn = DateTimeOffset.Now.AddDays(1.0), ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, SevisCommStatusId = SevisCommStatus.QueuedToSubmit.Id }; participantPerson.ParticipantPersonSevisCommStatuses.Add(status1); participantPerson.ParticipantPersonSevisCommStatuses.Add(status2); context.Projects.Add(project); context.ParticipantPersons.Add(participantPerson); context.Participants.Add(participant); context.ParticipantPersonSevisCommStatuses.Add(status1); var results = SevisBatchProcessingQueries.CreateGetSevisGroupedParticipantsQuery(context).ToList(); Assert.AreEqual(1, results.Count); }
public void TestCreateGetParticipantPersonSevisCommStatusesQuery_DoesNotHaveUserAccount() { var participant = new Participant { ParticipantId = 1, ProjectId = 100 }; var participantPerson = new ParticipantPerson { ParticipantId = participant.ParticipantId, Participant = participant }; participant.ParticipantPerson = participantPerson; var sevisCommStatus = new SevisCommStatus { SevisCommStatusId = 500, SevisCommStatusName = "sevis comm status name" }; var status = new ParticipantPersonSevisCommStatus { Id = 1, AddedOn = DateTimeOffset.UtcNow, BatchId = "batchId", ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, PrincipalId = null, SevisCommStatus = sevisCommStatus, SevisCommStatusId = sevisCommStatus.SevisCommStatusId, SevisOrgId = "sevis org Id", SevisUsername = "******" }; context.Participants.Add(participant); context.ParticipantPersons.Add(participantPerson); context.SevisCommStatuses.Add(sevisCommStatus); context.ParticipantPersonSevisCommStatuses.Add(status); var results = ParticipantPersonsSevisQueries.CreateGetParticipantPersonSevisCommStatusesQuery(context); Assert.AreEqual(1, results.Count()); var firstResult = results.First(); Assert.IsNull(firstResult.EmailAddress); Assert.IsNull(firstResult.DisplayName); Assert.IsNull(firstResult.PrincipalId); }
public void TestCreateGetSevisGroupedParticipantsQuery_IsNotQueuedToSubmitOrIsQueuedToValidate() { var project = new Project { ProjectId = 1 }; var participant = new Participant { ParticipantId = 10, ProjectId = project.ProjectId, Project = project }; var participantPerson = new ParticipantPerson { ParticipantId = participant.ParticipantId, Participant = participant, SevisId = "sevis id" }; participant.ParticipantPerson = participantPerson; var status = new ParticipantPersonSevisCommStatus { Id = 1, AddedOn = DateTimeOffset.Now, ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, SevisCommStatusId = SevisCommStatus.ReadyToSubmit.Id }; participantPerson.ParticipantPersonSevisCommStatuses.Add(status); context.Projects.Add(project); context.ParticipantPersons.Add(participantPerson); context.Participants.Add(participant); context.ParticipantPersonSevisCommStatuses.Add(status); var results = SevisBatchProcessingQueries.CreateGetSevisGroupedParticipantsQuery(context).ToList(); Assert.AreEqual(0, results.Count); }
public void TestCreateGetParticipantPersonsSevisDTOQuery_NoStatusesHaveBatchId() { var person = new Person { PersonId = 1, FullName = "full name" }; var status = new ParticipantStatus { ParticipantStatusId = 1, Status = "status", }; var participantType = new ParticipantType { IsPerson = true, Name = "part type", ParticipantTypeId = 90 }; var participant = new Participant { ParticipantId = 1, Status = status, ParticipantStatusId = status.ParticipantStatusId, ProjectId = 250, ParticipantTypeId = participantType.ParticipantTypeId, ParticipantType = participantType, PersonId = person.PersonId, Person = person }; var participantPerson = new ParticipantPerson { ParticipantId = participant.ParticipantId, Participant = participant, EndDate = DateTimeOffset.UtcNow.AddDays(10.0), IsCancelled = true, IsDS2019Printed = true, IsDS2019SentToTraveler = true, IsSentToSevisViaRTI = true, IsValidatedViaRTI = true, SevisBatchResult = "sevis batch result", SevisId = "sevis id", SevisValidationResult = "sevis validation result", StartDate = DateTimeOffset.UtcNow.AddDays(-10.0) }; participant.ParticipantPerson = participantPerson; var readyToSubmitStatus = new SevisCommStatus { SevisCommStatusId = SevisCommStatus.ReadyToSubmit.Id, SevisCommStatusName = SevisCommStatus.ReadyToSubmit.Value }; var pendingSendToSevisStatus = new SevisCommStatus { SevisCommStatusId = SevisCommStatus.PendingSevisSend.Id, SevisCommStatusName = SevisCommStatus.PendingSevisSend.Value }; var yesterdayStatus = new ParticipantPersonSevisCommStatus { AddedOn = DateTimeOffset.UtcNow.AddDays(-1.0), Id = 500, ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, SevisCommStatus = readyToSubmitStatus, SevisCommStatusId = readyToSubmitStatus.SevisCommStatusId, }; var todayStatus = new ParticipantPersonSevisCommStatus { AddedOn = DateTimeOffset.UtcNow, Id = 501, ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, SevisCommStatus = pendingSendToSevisStatus, SevisCommStatusId = pendingSendToSevisStatus.SevisCommStatusId, }; participantPerson.ParticipantPersonSevisCommStatuses.Add(todayStatus); participantPerson.ParticipantPersonSevisCommStatuses.Add(yesterdayStatus); context.SevisCommStatuses.Add(readyToSubmitStatus); context.SevisCommStatuses.Add(pendingSendToSevisStatus); context.ParticipantPersonSevisCommStatuses.Add(todayStatus); context.ParticipantPersonSevisCommStatuses.Add(yesterdayStatus); context.ParticipantTypes.Add(participantType); context.ParticipantStatuses.Add(status); context.Participants.Add(participant); context.ParticipantPersons.Add(participantPerson); context.People.Add(person); var results = ParticipantPersonsSevisQueries.CreateGetParticipantPersonsSevisDTOQuery(context).ToList(); Assert.AreEqual(1, results.Count()); var firstResult = results.First(); Assert.IsNull(firstResult.LastBatchDate); }
private ParticipantPersonSevisCommStatus AddOrUpdateParticipantPersonSevisCommStatus(ParticipantPersonSevisCommStatus latestStatus, int participantId, int commStatusId) { if (latestStatus == null) { return(AddParticipantPersonSevisCommStatus(participantId, commStatusId)); } else { if (latestStatus.SevisCommStatusId == SevisCommStatus.InformationRequired.Id || latestStatus.SevisCommStatusId == SevisCommStatus.NeedsValidationInfo.Id) { latestStatus.AddedOn = DateTimeOffset.UtcNow; return(latestStatus); } else { return(AddParticipantPersonSevisCommStatus(participantId, commStatusId)); } } }
public async Task TestUpdate_SocialMedia_SevisNotLocked() { var personId = 1; var participantId = 1; var creator = 1; var updatorId = 2; var updator = new User(updatorId); var facebookType = new SocialMediaType { SocialMediaTypeId = SocialMediaType.Facebook.Id, SocialMediaTypeName = SocialMediaType.Facebook.Value }; var twitter = new SocialMediaType { SocialMediaTypeId = SocialMediaType.Twitter.Id, SocialMediaTypeName = SocialMediaType.Twitter.Value }; var oldSocialMediaTypeId = facebookType.SocialMediaTypeId; var oldValue = "oldValue"; var yesterday = DateTimeOffset.Now.AddDays(-1.0); Person person = new Person { PersonId = personId }; var socialMedia = new SocialMedia { SocialMediaId = 1, Person = person, PersonId = person.PersonId }; var participant = new Participant { ParticipantId = participantId, PersonId = person.PersonId, ParticipantStatusId = ParticipantStatus.Active.Id }; List <Participant> participants = new List <Participant>(); participants.Add(participant); person.Participations = participants; var participantPerson = new ParticipantPerson { Participant = participant, ParticipantId = participant.ParticipantId, }; participant.ParticipantPerson = participantPerson; var queuedToSubmitStatus = new SevisCommStatus { SevisCommStatusId = SevisCommStatus.InformationRequired.Id, SevisCommStatusName = SevisCommStatus.InformationRequired.Value }; var commStatus = new ParticipantPersonSevisCommStatus { AddedOn = DateTimeOffset.UtcNow, BatchId = "batch id", Id = 501, ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, SevisCommStatus = queuedToSubmitStatus, SevisCommStatusId = queuedToSubmitStatus.SevisCommStatusId, }; participantPerson.ParticipantPersonSevisCommStatuses.Add(commStatus); person.SocialMedias.Add(socialMedia); context.SetupActions.Add(() => { context.SocialMedias.Add(socialMedia); context.SocialMediaTypes.Add(facebookType); context.SocialMediaTypes.Add(twitter); context.Participants.Add(participant); context.ParticipantPersons.Add(participantPerson); context.ParticipantPersonSevisCommStatuses.Add(commStatus); socialMedia.History.CreatedBy = creator; socialMedia.History.CreatedOn = yesterday; socialMedia.History.RevisedBy = creator; socialMedia.History.RevisedOn = yesterday; socialMedia.SocialMediaTypeId = facebookType.SocialMediaTypeId; socialMedia.SocialMediaType = facebookType; socialMedia.SocialMediaValue = oldValue; }); context.Revert(); var updatedSocialMedia = new UpdatedSocialMediaPresence(updator, socialMedia.SocialMediaId, "newValue", twitter.SocialMediaTypeId); var message = String.Format("An update was attempted on participant with id [{0}] but should have failed validation.", participant.ParticipantId); Action a = () => service.Update(updatedSocialMedia); Func <Task> f = () => service.UpdateAsync(updatedSocialMedia); a.ShouldNotThrow <EcaBusinessException>(); f.ShouldNotThrow <EcaBusinessException>(); }
public async Task TestUpdate_PersonEmail_SevisNotLocked() { var personId = 1; var participantId = 1; Person person = new Person { PersonId = personId }; var participant = new Participant { ParticipantId = participantId, PersonId = person.PersonId, ParticipantStatusId = ParticipantStatus.Active.Id }; List <Participant> participants = new List <Participant>(); participants.Add(participant); person.Participations = participants; var participantPerson = new ParticipantPerson { Participant = participant, ParticipantId = participant.ParticipantId, }; participant.ParticipantPerson = participantPerson; var queuedToSubmitStatus = new SevisCommStatus { SevisCommStatusId = SevisCommStatus.InformationRequired.Id, SevisCommStatusName = SevisCommStatus.InformationRequired.Value }; var commStatus = new ParticipantPersonSevisCommStatus { AddedOn = DateTimeOffset.UtcNow, BatchId = "batch id", Id = 501, ParticipantId = participant.ParticipantId, ParticipantPerson = participantPerson, SevisCommStatus = queuedToSubmitStatus, SevisCommStatusId = queuedToSubmitStatus.SevisCommStatusId, }; participantPerson.ParticipantPersonSevisCommStatuses.Add(commStatus); EmailAddressType emailAddressType = new EmailAddressType { EmailAddressTypeId = EmailAddressType.Home.Id, EmailAddressTypeName = EmailAddressType.Home.Value }; var creatorId = 1; var updatorId = 2; var yesterday = DateTimeOffset.UtcNow.AddDays(-1.0); var emailAddressId = 1; EmailAddress emailAddressToUpdate = null; context.SetupActions.Add(() => { emailAddressToUpdate = new EmailAddress { EmailAddressId = emailAddressId, Person = person, PersonId = person.PersonId }; emailAddressToUpdate.History.CreatedBy = creatorId; emailAddressToUpdate.History.RevisedBy = creatorId; emailAddressToUpdate.History.CreatedOn = yesterday; emailAddressToUpdate.History.RevisedOn = yesterday; person.EmailAddresses.Add(emailAddressToUpdate); context.EmailAddressTypes.Add(emailAddressType); context.People.Add(person); context.EmailAddresses.Add(emailAddressToUpdate); context.Participants.Add(participant); context.ParticipantPersons.Add(participantPerson); context.ParticipantPersonSevisCommStatuses.Add(commStatus); }); context.Revert(); var updatedEmailModel = new UpdatedEmailAddress(new User(updatorId), emailAddressId, "*****@*****.**", emailAddressType.EmailAddressTypeId, true); var message = String.Format("An update was attempted on participant with id [{0}] but should have failed validation.", participant.ParticipantId); Action a = () => service.Update(updatedEmailModel); Func <Task> f = () => service.UpdateAsync(updatedEmailModel); a.ShouldNotThrow <EcaBusinessException>(); f.ShouldNotThrow <EcaBusinessException>(); }