Example #1
0
        private void ProcessRowCell(UploadWizardCompleteModel model, CustomDataOrigin origin, Dictionary <int, CustomField> customFieldsDicitonary, int rowNum, DataRow row, Student student, ref bool successfulRow, ref int nonIdColumns, List <CustomFieldValue> rowCustomFieldValues, int i)
        {
            string fieldValue = row[i].ToString();

            if (!string.IsNullOrWhiteSpace(fieldValue))
            {
                nonIdColumns++;
                int integerTest;
                if (customFieldsDicitonary[i].CustomFieldType.Name.Equals("Integer") && !int.TryParse(fieldValue, out integerTest))
                {
                    successfulRow = false;
                    ProcessError(row, string.Format(CultureInfo.CurrentCulture, "Custom field {0} on row {1} is malformed", i + 1, rowNum + 2), model);
                }
                else
                {
                    DateTime dateTest;
                    if (customFieldsDicitonary[i].CustomFieldType.Name.Equals("Date") && !DateTime.TryParse(fieldValue, out dateTest))
                    {
                        successfulRow = false;
                        ProcessError(row, string.Format(CultureInfo.CurrentCulture, "Custom field {0} on row {1} is malformed", i + 1, rowNum + 2), model);
                    }
                    else
                    {
                        var value = new CustomFieldValue
                        {
                            CustomDataOriginId = origin.Id,
                            StudentId          = student.Id,
                            CustomFieldId      = customFieldsDicitonary[i].Id,
                            Value = fieldValue
                        };
                        rowCustomFieldValues.Add(value);
                    }
                }
            }
        }
        public void GivenACustomDataOrigin_WhenRemove_ThenRemoveFromContext()
        {
            var item = new CustomDataOrigin {
                Id = 1
            };

            Target.Remove(item);

            MockDbSet.AssertWasCalled(m => m.Remove(item));
        }
        public void GivenACustomDataOrigin_WhenUpdate_ThenContextSetsModified()
        {
            var expected = new CustomDataOrigin {
                Id = 1
            };

            Target.Update(expected);

            MockContext.AssertWasCalled(m => m.SetModified(expected));
        }
        public void GivenACustomDataOrigin_WhenAdd_ThenAddToContext()
        {
            var expected = new CustomDataOrigin {
                Id = 1
            };

            Target.Add(expected);

            MockDbSet.AssertWasCalled(m => m.Add(expected));
        }
Example #5
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);
        }
Example #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);
        }
Example #7
0
        private void AttemptRowReadOfUploadWizardFile(int studentIdColumn, UploadWizardCompleteModel model, CustomDataOrigin origin, Dictionary <int, CustomField> customFieldsDicitonary, int numColumns, int rowNum, DataRow row, Student student)
        {
            var successfulRow = true;
            int nonIdColumns  = 0;
            List <CustomFieldValue> rowCustomFieldValues = new List <CustomFieldValue>();

            for (int i = 0; i < numColumns; i++)
            {
                if (i != studentIdColumn)
                {
                    ProcessRowCell(model, origin, customFieldsDicitonary, rowNum, row, student, ref successfulRow, ref nonIdColumns, rowCustomFieldValues, i);
                }
            }
            if (nonIdColumns == 0)
            {
                successfulRow = false;
                ProcessError(row, string.Format(CultureInfo.CurrentCulture, "Row {0} requires an additional field to Id", rowNum + 2), model);
            }
            if (successfulRow)
            {
                model.SuccessfulRowsCount++;
                foreach (var value in rowCustomFieldValues)
                {
                    CustomFieldValueRepository.Add(value);
                }
            }
        }
Example #8
0
        private void ProcessRows(EducationSecurityPrincipal user, int studentIdColumn, DataTable dataTable, UploadWizardCompleteModel completeModel, CustomDataOrigin origin, Dictionary <int, CustomField> customFieldsDicitonary)
        {
            int numColumns = dataTable.Columns.Count;

            for (int i = 0; i < dataTable.Rows.Count; i++)
            {
                var row = dataTable.Rows[i];
                if (row.HasErrors)
                {
                    ProcessError(row, string.Format(CultureInfo.CurrentCulture, "Row {0} failed to process.  {1}", i + 2, row.RowError), completeModel);
                }
                else
                {
                    var studentId = row[studentIdColumn].ToString();
                    var student   = StudentRepository.Items.Include("StudentAssignedOfferings.ServiceOffering.Provider").
                                    SingleOrDefault(s => s.StudentSISId == studentId);
                    if (student == null || !PermissionFactory.Current.Create("ProcessDataFile", student).TryGrantAccess(user))
                    {
                        ProcessError(row, string.Format(CultureInfo.CurrentCulture, "You do not have permission to interact with the referenced student on row {0}", i + 2), completeModel);
                    }
                    else
                    {
                        AttemptRowReadOfUploadWizardFile(studentIdColumn, completeModel, origin, customFieldsDicitonary, numColumns, i, row, student);
                    }
                }
                completeModel.ProcessedRowCount++;
            }
        }
Example #9
0
 public void Update(CustomDataOrigin item)
 {
     Context.SetModified(item);
 }
Example #10
0
 public void Remove(CustomDataOrigin item)
 {
     Context.CustomDataOrigins.Remove(item);
 }
Example #11
0
 public void Add(CustomDataOrigin item)
 {
     Context.CustomDataOrigins.Add(item);
 }