public void GivenSubmitButtonWasClicked_WhenIPost_ThenTheAppropriateViewIsReturned() { var model = new UploadWizardModel { CustomFields = new List <CustomFieldSelectModel> { new CustomFieldSelectModel { SelectedCustomFieldId = 0 } } }; var result = Target.UploadWizard2(model, "submit") as ViewResult; Assert.IsNotNull(result); Assert.IsTrue(result.ViewName.Equals("UploadWizard3")); }
private Dictionary <int, CustomField> CreateCustomFieldsDictionary(UploadWizardModel uploadModel) { var customFieldsDicitonary = new Dictionary <int, CustomField>(); for (int i = 0; i < uploadModel.CustomFields.Count; i++) { if (uploadModel.CustomFields[i].SelectedCustomFieldId == 0) { customFieldsDicitonary.Add(i, null); } else { var selectedId = (int)uploadModel.CustomFields[i].SelectedCustomFieldId; var value = CustomFieldRepository.Items.Include(c => c.CustomFieldType).Where(c => c.Id == selectedId).SingleOrDefault(); customFieldsDicitonary.Add(i, value); } } return(customFieldsDicitonary); }
public void GivenSubmitButtonWasClicked_WhenUploadWizard2_ThenTheAppropriateViewIsReturned() { var model = new UploadWizardModel { CustomFields = new List <CustomFieldSelectModel> { new CustomFieldSelectModel { SelectedCustomFieldId = 0 } } }; MockLogicManager.Expect(m => m.GenerateUploadWizardCompleteViewModel(User, model)).Return(new UploadWizardCompleteModel()); var result = Target.UploadWizard2(model, "submit") as ViewResult; Assert.IsNotNull(result); Assert.IsTrue(result.ViewName.Equals("UploadWizard3")); result.AssertGetViewModel <UploadWizardCompleteModel>(); }
private CustomDataOrigin CreateCustomDataOrigin(EducationSecurityPrincipal user, UploadWizardModel uploadModel) { var origin = new CustomDataOrigin { CreatingUser = user.Identity.User, FileName = uploadModel.BlobAddress, AzureBlobKey = uploadModel.BlobAddress, Source = uploadModel.Source, WasManualEntry = false }; CustomDataOriginRepository.Add(origin); return(origin); }
private UploadWizardCompleteModel CheckUploadErrors(EducationSecurityPrincipal user, UploadWizardModel model, DataTable dataTable) { UploadWizardCompleteModel completeModel = new UploadWizardCompleteModel(); if (dataTable.Columns.Count != model.CustomFields.Count()) { completeModel.RowErrors.Add("There is a different amount of columns in the file than listed. Please re-submit the file and try again."); completeModel.ProcessedRowCount = completeModel.SuccessfulRowsCount = 0; return(completeModel); } foreach (var field in model.CustomFields) { if (field.SelectedCustomFieldId != 0) { IPermission customFieldPermission = PermissionFactory.Current.Create("UploadCustomFieldData", CustomFieldRepository.Items.Single(c => c.Id == field.SelectedCustomFieldId)); if (!customFieldPermission.TryGrantAccess(user)) { completeModel.RowErrors.Add("You don't have access to one or more of the selected custom fields. Re-submit and try again."); completeModel.ProcessedRowCount = completeModel.SuccessfulRowsCount = 0; return(completeModel); } } } return(completeModel); }
private UploadWizardCompleteModel ProcessDataFile(EducationSecurityPrincipal user, UploadWizardModel model, int studentIdColumn, Stream stream) { var dataTable = DataFileParser.ExtractValues(stream, '\t', model.NumberOfFields, model.FieldNameRow, model.FirstDataRow, model.LastDataRow); var completeModel = CheckUploadErrors(user, model, dataTable); if (completeModel.RowErrors.Count() > 0) { return(completeModel); } CustomDataOrigin origin = CreateCustomDataOrigin(user, model); Dictionary <int, CustomField> customFieldsDicitonary = CreateCustomFieldsDictionary(model); ProcessRows(user, studentIdColumn, dataTable, completeModel, origin, customFieldsDicitonary); RepositoryContainer.Save(); HandleRowErrors(user, completeModel, customFieldsDicitonary); return(completeModel); }
public UploadWizardCompleteModel GenerateUploadWizardCompleteViewModel(EducationSecurityPrincipal user, UploadWizardModel model) { int studentIdColumn = model.CustomFields.Select((v, i) => new { ViewModel = v, Index = i }).First(c => c.ViewModel.SelectedCustomFieldId == 0).Index; using (var stream = new MemoryStream()) { DataFileBlobContainer.DownloadToStream(model.BlobAddress, stream); return(ProcessDataFile(user, model, studentIdColumn, stream)); } }