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"));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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>();
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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));
            }
        }