protected override IList <Role> Read(DbDataReader reader) { IList <Role> roles = new List <Role>(); SqlDataReader sqlReader = (SqlDataReader)reader; while (sqlReader.Read()) { int i = -1; Role role = new Role(); role.Id = sqlReader.GetInt32(++i); role.Type = RoleEnumUtils.getRoleType(sqlReader.GetString(++i)); role.Description = sqlReader.GetString(++i); roles.Add(role); } return(roles); }
protected override IList <Person> Read(DbDataReader reader) { SqlDataReader sqlReader = (SqlDataReader)reader; bool goNext = false; const int START_COLUMN_POSSITION_OF_CAGE_INFORMATION = 15; const int LOGIN_COLUMN_POSSITION = 2; IList <Person> persons = new List <Person>(); while (goNext || sqlReader.Read()) { int i = -1; Person person = new Person(); Breeder breeder = null; Cleaner cleaner = null; person.Id = sqlReader.GetInt32(++i); person.Password = sqlReader.GetString(++i); person.Login = sqlReader.GetString(++i); person.FirstName = sqlReader.GetString(++i); person.LastName = sqlReader.GetString(++i); person.Phone = sqlReader.GetString(++i); person.BirthDate = sqlReader.GetDateTime(++i); person.Active = sqlReader.GetBoolean(++i); if (!sqlReader.IsDBNull(++i)) { person.LastActiveDate = sqlReader.GetDateTime(i); } if (!sqlReader.IsDBNull(++i)) { breeder = new Breeder(person); breeder.AnimalGroup = new AnimalGroup(); breeder.AnimalGroup.Id = sqlReader.GetInt32(i); breeder.AnimalGroup.Description = sqlReader.GetString(++i); person = breeder; } else { i += 1; } Role role = new Role(); role.Id = sqlReader.GetInt32(++i); role.Type = RoleEnumUtils.getRoleType(sqlReader.GetString(++i)); role.Description = sqlReader.GetString(++i); person.Role = role; if (!sqlReader.IsDBNull(++i)) { cleaner = new Cleaner(person); cleaner.ChemicalQualification = sqlReader.GetBoolean(i); person = cleaner; } if (breeder != null) { breeder.Role = role; } else if (cleaner != null) { cleaner.Role = role; } else { person.Role = role; } string lastLogin = person.Login; if (!sqlReader.IsDBNull(START_COLUMN_POSSITION_OF_CAGE_INFORMATION)) { cleaner.Cages = new List <Cage>(); do { int j = START_COLUMN_POSSITION_OF_CAGE_INFORMATION - 1; Cage cage = new Cage(); cage.Id = sqlReader.GetInt32(++j); cage.LengthM = sqlReader.GetInt32(++j); cage.WidthM = sqlReader.GetInt32(++j); cleaner.Cages.Add(cage); goNext = sqlReader.Read(); } while (goNext && lastLogin == sqlReader.GetString(LOGIN_COLUMN_POSSITION)); } else { goNext = false; } persons.Add(person); } return(persons); }