Beispiel #1
0
        public async Task <IDataResult <long> > Add(AddStudentModel addStudentModel)
        {
            var validation = new AddStudentModelValidator().Valid(addStudentModel);

            if (!validation.Success)
            {
                return(new ErrorDataResult <long>(validation.Message));
            }

            StudentDomain domain = new StudentDomain(DatabaseUnitOfWork, StudentRepository, CourseRepository);

            var    student      = domain.ConvertToStudentEntity(addStudentModel);
            string errorMessage = await domain.ApplyBusinessRules(student);

            if (!string.IsNullOrWhiteSpace(errorMessage))
            {
                return(new ErrorDataResult <long>(errorMessage));
            }

            await StudentRepository.AddAsync(student);

            await DatabaseUnitOfWork.SaveChangesAsync();

            return(new SuccessDataResult <long>(student.StudentId));
        }
Beispiel #2
0
        public OperationStatus Update(StudentDomain student)
        {
            Guard.WhenArgument(student, nameof(student)).IsNull().Throw();

            try
            {
                var studentEntity = _mappingService.Map <StudentEntity>(student);

                _entityFrameworkGenericRepository.Update(studentEntity);
                _unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                if (ex.InnerException.InnerException.Message.Contains("Cannot insert duplicate key row in object"))
                {
                    return(new FailureStatus($"Ученик с номер { student.Number } вече съществува!"));
                }

                // TODO how to log classEntity?
                _loggingService.Error(ex);

                return(new FailureStatus("Възникна грешка при създаването на ученикът. Моля свържете се със ситемният администратор."));
            }

            return(new SuccessStatus());
        }
        public async Task AddStudent(StudentDomain studentDomain)
        {
            StudentData studentData = new StudentData
            {
                StudentDataId = studentDomain.Id.ToString(),
                Age           = studentDomain.Age.ToString(),
                Name          = studentDomain.Name,
            };

            foreach (var subject in studentDomain.Subjects)
            {
                studentData.StudentSubjectData.Add(new StudentSubjectData
                {
                    StudentDataId = studentDomain.Id.ToString(),
                    StudentData   = studentData,
                    SubjectDataId = subject.Id,
                    SubjectData   = await _database.Subjects.SingleAsync(item => item.SubjectDataId == subject.Id)
                });
            }

            await _database.Students.AddAsync(studentData);

            _database.SaveChanges();

            /*studentDatabase.Add(studentDomain.Id.ToString(), new StudentData {
             *  StudentDataId = studentDomain.Id.ToString(),
             *  Name = studentDomain.Name,
             *  Age = studentDomain.Age.ToString()
             * });*/
        }
        public async Task <StudentDomain> GetStudent(Guid id)
        {
            var result = await _database.Students
                         .Where(s => s.StudentDataId == id.ToString())
                         .Include(student => student.StudentSubjectData)
                         .ThenInclude(studentSubjectData => studentSubjectData.SubjectData)
                         .SingleAsync();

            List <Subject> subjects = new List <Subject>();

            foreach (StudentSubjectData studentSubjectData in result.StudentSubjectData)
            {
                subjects.Add(new Subject(studentSubjectData.SubjectData.SubjectDataId, studentSubjectData.SubjectData.Name, null
                                         ));
            }

            StudentDomain studentDomain = new StudentDomain(
                Guid.Parse(result.StudentDataId),
                result.Name,
                Int32.Parse(result.Age),
                subjects
                );

            return(studentDomain);

            /*return new StudentDomain(id, studentDatabase[id.ToString()].Name, Int32.Parse(studentDatabase[id.ToString()].Age),
             *      null
             *  );*/
        }
Beispiel #5
0
        private async Task MainAsync()
        {
            queuClient = new QueueClient(Environment.GetEnvironmentVariable("LearningHub_AzureServiceBus"), Environment.GetEnvironmentVariable("LearningHub_QueueName"));
            DatabaseContextFactory dbFactory = new DatabaseContextFactory();
            var databaseContext = dbFactory.CreateDbContext(new string[] { });

            databaseUnitOfWork = new DatabaseUnitOfWork(databaseContext);
            studentRepository  = new StudentRepository(databaseContext);
            courseRepository   = new CourseRepository(databaseContext);
            studentDomain      = new StudentDomain(databaseUnitOfWork, studentRepository, courseRepository);

            Console.WriteLine("======================================================");
            Console.WriteLine("Press ENTER key to stop receiving messages and exit.");
            Console.WriteLine("======================================================");

            // Register the queue message handler and receive messages in a loop
            RegisterOnMessageHandlerAndReceiveMessages();

            Console.ReadKey();

            await queuClient.CloseAsync();
        }
Beispiel #6
0
        public async Task <IActionResult> Get(int id)
        {
            Student       student       = new Student();
            StudentDomain studentDomain = new StudentDomain();
            var           attends       = new List <ClassDomainForStudent>();

            var studentFromDB = await _studentRepository.GetStudent(id);

            if (studentFromDB == null)
            {
                return(new NotFoundResult());
            }
            studentDomain.StudentId   = studentFromDB.StudentId;
            studentDomain.FirstName   = studentFromDB.FirstName;
            studentDomain.LastName    = studentFromDB.LastName;
            studentDomain.DateOfBirth = studentFromDB.DateOfBirth;
            studentDomain.CreatedDate = studentFromDB.CreatedDate;
            studentDomain.UpdatedDate = studentFromDB.UpdatedDate;
            student.ClassAttend       = studentFromDB.ClassAttend;

            foreach (var attend in student.ClassAttend)
            {
                var classFromDB = await _studentRepository.GetStudentClass(attend);

                if (classFromDB != null)
                {
                    attends.Add(new ClassDomainForStudent
                    {
                        ClassId   = classFromDB.ClassId,
                        ClassName = classFromDB.ClassName
                    });
                }
            }

            studentDomain.ClassAttend = attends;

            return(new ObjectResult(studentDomain));
        }
Beispiel #7
0
 public StudentController()
 {
     this.StudentDomain = new StudentDomain();
 }
 public IActionResult Delete(int id)
 {
     StudentDomain.del(id);
     return(Ok());
 }
 public IActionResult Put(Students student)
 {
     StudentDomain.update(student);
     return(Ok());
 }
 public IActionResult Post(Students student)
 {
     StudentDomain.Add(student);
     return(Ok());
 }
Beispiel #11
0
        public void CreateClassForUser(string filePath, string userId)
        {
            FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);

            //Choose one of either 1 or 2
            //1. Reading from a binary Excel file ('97-2003 format; *.xls)
            //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);

            //2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
            IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

            //Choose one of either 3, 4, or 5
            //3. DataSet - The result of each spreadsheet will be created in the result.Tables
            DataSet result = excelReader.AsDataSet();

            //4. DataSet - Create column names from first row
            //excelReader.IsFirstRowAsColumnNames = true;
            //DataSet result = excelReader.AsDataSet();

            //5. Data Reader methods
            var clases = new List <ClassDomain>();

            for (int sheetIndex = 0; sheetIndex < result.Tables.Count; sheetIndex++)
            {
                var @class = new ClassDomain
                {
                    Name           = result.Tables[sheetIndex].TableName,
                    ClassTeacherId = userId,
                    // TODO works only for Blagoev
                    SchoolId = 1
                };

                var sheet = result.Tables[sheetIndex];

                // skip first rows
                for (var row = 2; row < sheet.Rows.Count; row++)
                {
                    if (sheet.Rows[row].ItemArray[0].ToString() == "")
                    {
                        break;
                    }

                    var student = new StudentDomain
                    {
                        Number     = int.Parse(sheet.Rows[row].ItemArray[0].ToString()),
                        FirstName  = sheet.Rows[row].ItemArray[1].ToString(),
                        MiddleName = sheet.Rows[row].ItemArray[2].ToString(),
                        LastName   = sheet.Rows[row].ItemArray[3].ToString()
                    };

                    var monthId = 1;

                    // start from 4 because in exel file absenses starts from 4 column
                    for (var col = 4; col <= sheet.Rows[row].ItemArray.Length; col += 2)
                    {
                        if (sheet.Rows[row].ItemArray[col].ToString() == "" && sheet.Rows[row].ItemArray[col + 1].ToString() == "")
                        {
                            break;
                        }

                        var absence = new AbsenceDomain();

                        var    excusedAbsenceAsString = sheet.Rows[row].ItemArray[col].ToString();
                        double excusedAbsence;
                        absence.Excused = double.TryParse(excusedAbsenceAsString, out excusedAbsence) ? excusedAbsence : 0;

                        var    notExcusedAbsenceAsString = sheet.Rows[row].ItemArray[col + 1].ToString();
                        double notExcusedAbsence;
                        absence.NotExcused = double.TryParse(notExcusedAbsenceAsString, out notExcusedAbsence) ? notExcusedAbsence : 0;

                        absence.MonthId = monthId;

                        student.Absences.Add(absence);
                        monthId++;
                    }

                    @class.Students.Add(student);
                }

                clases.Add(@class);
            }

            _classService.AddRange(clases);

            excelReader.Close();
        }