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()); }
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)); }
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(); }