Пример #1
0
        public OperationStatus Add(ClassDomain @class)
        {
            Guard.WhenArgument(@class, nameof(@class)).IsNull().Throw();

            try
            {
                // TODO techdeb only 1 for Blagoev
                @class.SchoolId = 1;

                var classEntity = _mappingService.Map <ClassEntity>(@class);
                _entityFrameworkGenericRepository.Add(classEntity);

                _unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                if (ex.InnerException.InnerException.Message.Contains("Cannot insert duplicate key row in object"))
                {
                    return(new FailureStatus("Съществува клас с избраният класен ръководител."));
                }

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

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

            return(new SuccessStatus());
        }
Пример #2
0
        public async Task <IActionResult> Get(int id)
        {
            //var _class = await _classRepository.GetClass(id);
            //if (_class == null)
            //    return new NotFoundResult();
            //return new ObjectResult(_class);

            Class       _class      = new Class();
            ClassDomain classDomain = new ClassDomain();
            var         instructors = new List <InstructorDomain>();
            var         semesters   = new List <SemesterDomain>();

            var classFromDB = await _classRepository.GetClass(id);

            if (classFromDB == null)
            {
                return(new NotFoundResult());
            }
            classDomain.ClassId     = classFromDB.ClassId;
            classDomain.ClassName   = classFromDB.ClassName;
            classDomain.CreatedDate = classFromDB.CreatedDate;
            classDomain.UpdatedDate = classFromDB.UpdatedDate;
            _class.Semester         = classFromDB.Semester;
            _class.Instructor       = classFromDB.Instructor;

            foreach (var instructor in _class.Instructor)
            {
                var instructorFromDB = await _classRepository.GetClassInstructor(instructor);

                if (instructorFromDB != null)
                {
                    instructors.Add(new InstructorDomain
                    {
                        Id           = instructorFromDB.Id,
                        InstructorId = instructorFromDB.InstructorId,
                        FirstName    = instructorFromDB.FirstName,
                        LastName     = instructorFromDB.LastName
                    });
                }
            }

            foreach (var semester in _class.Semester)
            {
                var semesterFromDB = await _classRepository.GetClassSemester(semester);

                if (semesterFromDB != null)
                {
                    semesters.Add(new SemesterDomain
                    {
                        Id           = semesterFromDB.Id,
                        SemesterId   = semesterFromDB.SemesterId,
                        SemesterName = semesterFromDB.SemesterName
                    });
                }
            }

            classDomain.Semester   = semesters;
            classDomain.Instructor = instructors;

            return(new ObjectResult(classDomain));
        }
Пример #3
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();
        }