public get_Train_By_ID_Result get_Train_By_IDDAL(int id)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         return orr.get_Train_By_ID(id).FirstOrDefault();
     }
 }
 public Get_User_By_UserName_v2_Result Get_User_By_UserNameDAL(string username)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         return orr.Get_User_By_UserName_v2(username).FirstOrDefault();
     }
 }
 public get_Passenger_By_PNR_Result Get_Passenger_By_PNRDAL(string pnr)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         return orr.get_Passenger_By_PNR(pnr).FirstOrDefault();
     }
 }
        //public IEnumerable<Get_Coach_By_Train_ID_Result> Get_Coach_By_TrainDAL(int idtrain)
        //{
        //    using (var orr = new Online_Railway_reservation_systemEntities())
        //    {
        //        orr.Configuration.ProxyCreationEnabled = false;
        //        foreach (var item in orr.Get_Coach_By_Train_ID(idtrain))
        //        {
        //            yield return item;
        //        }
        //    }
        //}

        public IEnumerable<Search_Coach_Type_Result> Search_CoachDAL(int trainid, string coachtype)
        {
            using (var orr = new Online_Railway_reservation_systemEntities())
            {
                orr.Configuration.ProxyCreationEnabled = false;
                foreach (var item in orr.Search_Coach_Type(trainid,coachtype))
                {
                    yield return item;
                }
            }
        }
 public IEnumerable<get_Passenger_By_Email_Result> Get_Passenger_By_EmailDAL(string email, string phonenumber)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         foreach (var item in orr.get_Passenger_By_Email(email, phonenumber))
         {
             yield return item;
         }
     }
 }
 public IEnumerable<Search_Ticket_By_PNR_Result> Search_Ticket_By_PNRDAL(string pnr)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         foreach (var item in orr.Search_Ticket_By_PNR(pnr))
         {
             yield return item;
         }
     }
 }
 public IEnumerable<Get_All_Train_v2_Result> Get_All_Trains_v2_DAL()
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         foreach (var item in orr.Get_All_Train_v2())
         {
             yield return item;
         }
     }
 }
 public IEnumerable<getAll_Passengers_Result> GetAll_PassengersDAL()
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         foreach (var item in orr.getAll_Passengers())
         {
             yield return item;
         }
     }
 }
 public IEnumerable<Get_Coach_By_Train_ID_Result> GetCoachByTrainIDDAL(int trainid)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         foreach (var item in orr.Get_Coach_By_Train_ID(trainid))
         {
             yield return item;
         }
     }
 }
 public int Update_StationsDAL(Station s)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Update_Stations(s.Station_ID,s.Station_Name,s.Latitude,s.Longtitude,s.Status);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Update_TicketsDAL(Ticket t)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Update_Tickets(t.Ticket_ID, t.PNR, t.Passenger_type, t.Status, t.Train_ID,t.Departure_Date,t.Departure_Time,t.Coach_Type,t.Price);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Add_RolesDAL(string rolename)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Add_Roles(rolename);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Update_UsersDAL(User u)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Update_Users(u.Username, u.Password, u.Email, u.Phone_Number, u.Gender, u.Security_Code, u.Role_ID);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Update_PassengersDAL(Passenger p)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Update_Passengers(p.PNR, p.Passenger_Name, p.Date_Of_Birth, p.Card_Code, p.Gender, p.Email, p.Phone_Number, p.Address);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Delete_TrainsDAL(int id)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Delete_Trains(id);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Delete_PassengersDAL(string pnr)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Delete_Passengers(pnr);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Update_TrainsDAL(Train t)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Update_Trains(t.Train_ID, t.Train_Name, t.Origin_Station_ID, t.Destination_Station_ID, t.Status, t.Train_Type);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Update_TimetablesDAL(Timetable t)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Update_Timetables(t.Timetable_ID, t.Departure_Date, t.Departure_Time, t.Arrival_Date, t.Arrival_Time, t.Distance, t.Train_ID);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Add_CoachesDAL(Coach c)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Add_Coaches(c.Coach_Type,c.Train_ID,c.Number_Of_Seats,c.Price,c.Status);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public int Update_RolesDAL(Role r)
 {
     try
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             orr.Update_Roles(r.Role_ID,r.Role_Name);
             return 1;
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
 public IEnumerable<Get_Train_By_Time_Sche2_Result> Get_Train_Time_ScheDAL(int id,DateTime dt)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         foreach (var item in orr.Get_Train_By_Time_Sche2(id,dt))
         {
             yield return item;
         }
     }
 }
        public int Update_PasswordDAL(User user)
        {
            try
            {
                using (var orr = new Online_Railway_reservation_systemEntities())
                {
                    orr.Configuration.ProxyCreationEnabled = false;
                    orr.Update_Password(user.Username, user.Password);
                    return 1;
                }
            }
            catch (Exception)
            {

                return 0;
            }
        }
        public int Search_UsernameDAL(User user)
        {
            try
            {
                using (var orr = new Online_Railway_reservation_systemEntities())
                {
                    orr.Configuration.ProxyCreationEnabled = false;
                    orr.Search_Username_By_ID(user.Username);
                    return 1;
                }
            }
            catch (Exception)
            {

                return 0;
            }
        }
 public Search_Train_By_Train_id_Result Search_Train_By_Train_id_DAL(int train_id)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         return orr.Search_Train_By_Train_id(train_id).FirstOrDefault();
     }
 }
 public IEnumerable<Search_Train_TimeTable_Result> search_Train_By_StatinIDDAL(int OSID, int DSID, DateTime DD)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         foreach (var item in orr.Search_Train_TimeTable(OSID, DSID, DD))
         {
             yield return item;
         }
     }
 }
 public int Cancel_TicketDAL(int id, string status)
 {
     try 
     {
         using (var orr = new Online_Railway_reservation_systemEntities())
         {
             orr.Configuration.ProxyCreationEnabled = false;
             return orr.Cancel_Ticket(id, status);
         }
     }
     catch (Exception)
     {
         return 0;
     }
 }
        public int Update_InfoDAL(User user)
        {
            try
            {
                using (var orr = new Online_Railway_reservation_systemEntities())
                {
                    orr.Configuration.ProxyCreationEnabled = false;
                    orr.Update_Info(user.Username, user.Email, user.Phone_Number, user.Gender);
                    return 1;
                }
            }
            catch (Exception)
            {

                return 0;
            }
        }
 public login_Result LoginDAL(string username, string pass)
 {
     using (var orr = new Online_Railway_reservation_systemEntities())
     {
         orr.Configuration.ProxyCreationEnabled = false;
         return orr.login(username, pass).FirstOrDefault();
     }
 }
 public Get_Station_By_Train_ID_Result Get_Station_By_Train_IDDAL(int Train_id)
 {
     using (var oor = new Online_Railway_reservation_systemEntities())
     {
         oor.Configuration.ProxyCreationEnabled = false;
         return oor.Get_Station_By_Train_ID(Train_id).FirstOrDefault<Get_Station_By_Train_ID_Result>();
     }
 }