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