Пример #1
0
        public List <Ride> GetRides()
        {
            CategoryRepository categoryRepository = new CategoryRepository();
            ReportRepository   reportRepository   = new ReportRepository();

            List <Ride> rides = new List <Ride>();
            string      sql   = "SELECT Rides.RideId, Rides.Name, Rides.Description, Rides.CategoryId, Rides.Status, Reports.Status AS ReportStatus, Reports.ReportTime, Reports.Notes, Reports.RideId AS ReportRideId FROM Rides LEFT JOIN Reports ON Rides.RideId = Reports.RideId";

            DataSet ds = ExecuteQuery(sql);

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                RideCategory rideCategory = categoryRepository.GetRideCategory((int)row["CategoryId"]);

                bool rideExists = false;

                if (rides.Count == 0)
                {
                    Ride ride = new Ride(
                        (Status)(int)row["Status"],
                        rideCategory,
                        (string)row["Description"],
                        (string)row["Name"],
                        (int)row["RideId"]
                        );

                    if (int.TryParse(row["ReportStatus"].ToString(), out int status))
                    {
                        Report report = new Report(
                            (string)row["Notes"],
                            (DateTime)row["ReportTime"],
                            (Status)(int)row["ReportStatus"],
                            ride,
                            (int)row["ReportRideId"]
                            );

                        ride.Reports.Add(report);
                    }

                    rides.Add(ride);
                }
                else
                {
                    foreach (Ride ride in rides)
                    {
                        if (ride.Id == (int)row["RideId"])
                        {
                            if (int.TryParse(row["ReportStatus"].ToString(), out int status))
                            {
                                Report report = new Report(
                                    (string)row["Notes"],
                                    (DateTime)row["ReportTime"],
                                    (Status)(int)row["ReportStatus"],
                                    ride,
                                    (int)row["ReportRideId"]
                                    );

                                ride.Reports.Add(report);
                            }

                            rideExists = true;
                        }
                    }

                    if (!rideExists)
                    {
                        Ride ride = new Ride(
                            (Status)(int)row["Status"],
                            rideCategory,
                            (string)row["Description"],
                            (string)row["Name"],
                            (int)row["RideId"]
                            );

                        if (int.TryParse(row["ReportStatus"].ToString(), out int status))
                        {
                            Report report = new Report(
                                (string)row["Notes"],
                                (DateTime)row["ReportTime"],
                                (Status)(int)row["ReportStatus"],
                                ride,
                                (int)row["ReportRideId"]
                                );

                            ride.Reports.Add(report);
                        }

                        rides.Add(ride);
                    }
                }
            }

            return(rides);
        }