public APIResult <IEnumerable <DAL.vwTripSeatDetails> > Details(int trip_id) { using (var ctx = new DAL.MainEntities()) { return(APIResult <IEnumerable <DAL.vwTripSeatDetails> > .Success(ctx.vwTripSeatDetails.Where(a => a.trip_id == trip_id).ToList())); } }
public APIResult <DAL.vwTripsDetails> Details(int trip_id) { using (var ctx = new DAL.MainEntities()) { return(APIResult <DAL.vwTripsDetails> .Success(ctx.vwTripsDetails.Where(a => a.trip_id == trip_id && a.is_active == true).FirstOrDefault())); } }
public async Task <APIResult <bool> > Canceled(string ids) { int[] book_ids = ids.Split(',').Select(a => int.Parse(a)).ToArray(); if (book_ids.Count() == 0) { return(APIResult <bool> .Error(ResponseCode.UserValidationField, "ids is required !")); } var u = APIRequest.User(HttpContext.Current.Request); using (var ctx = new DAL.MainEntities()) { var lst = ctx.trip_book.Include("trip_share_details").Include("trip_request_details").Where(a => book_ids.Contains(a.id)); foreach (var item in lst) { item.canceled_at = DateTime.Now; item.canceled_by = u.Entity.id; item.trip_share_details.booked_seats++; ctx.Entry(item).State = System.Data.Entity.EntityState.Modified; } bool r = ctx.SaveChanges() > 0; var tripid = lst.FirstOrDefault().trip_share_details.id; var riderIDs = ctx.trip_request.Where(a => lst.Select(s => s.trip_request_details.trip_request_id).Contains(a.id)).Select(a => a.rider_id).ToList(); var driverDeviceID = ctx.sec_sessions.Where(a => riderIDs.Contains(a.user_id)).Select(a => a.device_id).Distinct().ToArray(); await FirebaseNotifications.Send(driverDeviceID, "Seats Canceled", "The driver just canceled your request seats.", new { type = 3, screen = "trip", id = tripid, sender = ctx.vwProfile.FirstOrDefault(a => a.id == u.Entity.id).firebase_uid }); return(APIResult <bool> .Success(r)); } }
public APIResult <DAL.vwTripsDetails> Current(bool is_rider = false) { var u = APIRequest.User(HttpContext.Current.Request); using (var ctx = new DAL.MainEntities()) { var sTime = DateTime.Now.AddMinutes(180); var cDate = DateTime.Now.Date; var cTime = DateTime.Now.AddMinutes(-180); if (is_rider) { var books = ctx.trip_book.Include("trip_request_details").Include("trip_request_details.trip_request").Where(a => a.trip_request_details.trip_request.rider_id == u.Entity.id && a.end_at == null && a.reached_at != null).OrderBy(a => a.id).FirstOrDefault(); if (books == null) { return(APIResult <DAL.vwTripsDetails> .Success(null)); } return(APIResult <DAL.vwTripsDetails> .Success(ctx.vwTripsDetails.Where(a => a.trip_id == books.trip_share_details_id).OrderByDescending(a => a.trip_id).FirstOrDefault())); } else { return(APIResult <DAL.vwTripsDetails> .Success(ctx.vwTripsDetails.Where(a => a.start_at_date > cTime && a.start_at_date <= sTime && a.is_active == true && a.driver_id == u.Entity.id && ((a.ended_seats < a.started_seats && a.started_seats > 0) || (a.started_seats == 0))).OrderBy(a => a.trip_id).FirstOrDefault())); } } }
public APIResult <ProfileResponse> Get(int id) { using (var ctx = new DAL.MainEntities()) { ProfileResponse profile = new ProfileResponse(); profile.Account = ctx.vwProfile.Where(a => a.id == id).FirstOrDefault(); if (profile.Account == null) { return(APIResult <ProfileResponse> .Error(ResponseCode.UserNotFound, "This account not found!")); } profile.Vehicles = ctx.tbl_vehicles.Where(a => a.owner_id == profile.Account.id && a.is_delete != true) .Select( c => new VehicleResponse() { data = c, images = new ImagesResponse() { Count = ctx.tbl_images.Where(d => d.model_name == "tbl_vehicles" && d.model_id == c.id && d.model_tag == "main").Count(), Url = (ctx.tbl_images.Where(d => d.model_name == "tbl_vehicles" && d.model_id == c.id && d.model_tag == "main").Count() == 0) ? "" : "/img/scale/tbl_vehicles/" + c.id + "/original/main-{index}.gif" } // .Select(b => "/img/scale/tbl_vehicles/"+ b.model_id + "/original/main-"++".gif").ToList(), }).ToList(); var vchiclesIDs = profile.Vehicles.Select(b => b.data.id).ToList(); var driversIDs = ctx.tbl_drivers_vehicles_rel.Where(a => vchiclesIDs.Contains((int)a.vehicle_id)).Select(c => c.driver_id).ToList(); profile.Drivers = ctx.vwProfile.Where(a => driversIDs.Contains(a.id)).ToList(); return(APIResult <ProfileResponse> .Success(profile, "Data getted success")); } }
public APIResult <bool> ChangePassword(PasswordEditRequest request) { var u = APIRequest.User(HttpContext.Current.Request).Entity; //if (request.password != request.cpassword) return APIResult<bool>.Error(ResponseCode.UserValidationField, "Password and confirm not matches !!"); if (request.password.Length < 6) { return(APIResult <bool> .Error(ResponseCode.UserValidationField, "Very short password min (6 chars) !!")); } if (request.current != u.pwd) { return(APIResult <bool> .Error(ResponseCode.UserValidationField, "Invalid current password !!")); } using (var ctx = new DAL.MainEntities()) { var user = ctx.sec_users.Find(u.id); if (request.password == user.pwd) { return(APIResult <bool> .Error(ResponseCode.UserValidationField, "Cannot save new password, It is the same 'Current Password'!!")); } user.pwd = request.password; ctx.Entry(user).State = System.Data.Entity.EntityState.Modified; if (ctx.SaveChanges() > 0) { return(APIResult <bool> .Error(ResponseCode.UserValidationField, "API_SUCCESS")); } return(APIResult <bool> .Error(ResponseCode.UserValidationField, "Cannot save password !!")); } }
public static LoginResponse Login(string uName, string pass, NameValueCollection request) { try { using (MainEntities ctx = new MainEntities()) { string md5Pass = General.MD5(pass); var usr = ctx.tbl_accounts.Include("sec_users").FirstOrDefault(f => f.email == uName && f.sec_users.pwd == md5Pass && (f.is_deleted == false || f.is_deleted == null)); if (usr != null) { } using (DAL.MainEntities itemCtx = new DAL.MainEntities()) { if (usr != null) { DAL.tbl_accounts acc = itemCtx.tbl_accounts.FirstOrDefault(a => a.id == usr.id); var c = new Responses.LoginResponse() { account = acc, password = acc.sec_users.pwd, token = usr.sec_users.sec_sessions.First().id, roles = ctx.sec_users_roles.Include("sec_roles").Where(a => a.user_id == acc.id).Select(b => b.sec_roles.role_key).ToArray() }; return(c); } } return(null); } } catch (Exception ex) { return(null); } }
public APIResult <List <DAL.vwSeatsPending> > Pending(int trip_type_id = 0) { var u = Requests.APIRequest.User(HttpContext.Current.Request); using (var ctx = new DAL.MainEntities()) { return(APIResult <List <DAL.vwSeatsPending> > .Success(ctx.vwSeatsPending.Where(a => a.start_at_date > DateTime.Now && a.acc_id == u.Entity.id && (trip_type_id == 0 ? true : a.trip_type_id == trip_type_id)).OrderBy(a => a.start_at_date).ToList())); } }
public APIResult <List <DAL.vwSeatsHistory> > Schedule(int trip_type_id = 0) { var u = Requests.APIRequest.User(HttpContext.Current.Request); using (var ctx = new DAL.MainEntities()) { return(APIResult <List <DAL.vwSeatsHistory> > .Success(ctx.vwSeatsHistory.Where(a => a.start_at_date > DateTime.Now && (a.driver_id == u.Entity.id || a.rider_id == u.Entity.id) && (trip_type_id == 0 ? true : a.trip_type_id == trip_type_id)).ToList())); } }
public APIResult <List <DAL.vwSeatsHistory> > History(int trip_type_id = 0) { var u = Requests.APIRequest.User(HttpContext.Current.Request); using (var ctx = new DAL.MainEntities()) { return(APIResult <List <DAL.vwSeatsHistory> > .Success(ctx.vwSeatsHistory.Where(a => a.ended_at != null && (a.driver_id == u.Entity.id || a.rider_id == u.Entity.id) && (trip_type_id == 0?true:a.trip_type_id == trip_type_id)).OrderByDescending(a => a.ended_at).ToList())); } }
public APIResult <DAL.vwTripsDetails> Current() { using (var ctx = new DAL.MainEntities()) { var sTime = DateTime.Now.AddMinutes(60); var cDate = DateTime.Now.Date; var cTime = DateTime.Now.AddMinutes(-30); return(APIResult <DAL.vwTripsDetails> .Success(ctx.vwTripsDetails.Where(a => a.start_at_date < sTime && a.start_at_date > cTime && a.is_active == true).OrderByDescending(a => a.trip_id).FirstOrDefault())); } }
public ActionResult Invite(int id, string email, string name, string app_link) { using (var ctx = new DAL.MainEntities()) { var user = ctx.sec_users.Include("tbl_accounts").FirstOrDefault(a => a.id == id && a.tbl_accounts.active == true); if (user == null) { return(Content("Invalid user data !")); } ViewBag.name = name; ViewBag.sender_name = user.tbl_accounts.first_name; ViewBag.url = app_link; } return(View()); }
public APIResult <bool> Invite(string email, string name) { using (var ctx = new DAL.MainEntities()) { var u = APIRequest.User(HttpContext.Current.Request); var acc = ctx.tbl_accounts.Find(u.Entity.id); System.Net.WebClient webClient = new System.Net.WebClient(); webClient.Encoding = System.Text.Encoding.UTF8; var html = webClient.DownloadString(Settings.Get("site_url") + "/MailBody/Invite?id=" + acc.id + "&email=" + email + "&name=" + name); Libs.General.SendMail(email, "Chari80 Invitaion from your frind", html, "Chari80", "", "", "", true); return(APIResult <bool> .Success(true)); } }
public APIResult <bool> CameraStatus(bool status) { var u = APIRequest.User(HttpContext.Current.Request); try { using (var ctx = new DAL.MainEntities()) { u.Entity.camera_status = status; ctx.Entry(u.Entity).State = System.Data.Entity.EntityState.Modified; ctx.SaveChanges(); } return(APIResult <bool> .Success(true)); } catch (Exception ex) { return(APIResult <bool> .Error(ResponseCode.BackendDatabase, ex.Message)); } }
// GET: MailBody public ActionResult RestPassword(int id, string os = "undifined", string browser = "undifined") { using (var ctx = new DAL.MainEntities()) { var user = ctx.sec_users.Include("tbl_accounts").FirstOrDefault(a => a.id == id); if (user == null) { return(Content("Invalid user data !")); } if (user.reset_pwd_token == null) { return(Content("Cannot display reset passord email body !")); } ViewBag.name = user.tbl_accounts.first_name; ViewBag.url = Libs.General.ApplicationUrl() + "/Login/ResetPassword?key=" + user.reset_pwd_token; ViewBag.os = os; ViewBag.browser = browser; } return(View()); }
public async Task <APIResult <List <DAL.trip_book> > > Booking(int trip_id, int?seat = 1, bool?all_shoots = true) { var u = Requests.APIRequest.User(HttpContext.Current.Request); if (trip_id == 0) { return(APIResult <List <DAL.trip_book> > .Error(ResponseCode.UserValidationField, "'trip_id' is required!")); } List <DAL.trip_book> lst = new List <DAL.trip_book>(); using (var ctx = new DAL.MainEntities()) { var selectedTrip = ctx.trip_share_details.Include("trip_share").FirstOrDefault(a => a.id == trip_id); if (selectedTrip.trip_share.driver_id == u.Entity.id) { return(APIResult <List <DAL.trip_book> > .Error(ResponseCode.UserValidationField, "You cannot booking your shared trip!")); } //var cTime = DateTime.Now.AddMinutes(-30) ; //&& a.start_at_date >= cTime var triplist = ctx.trip_share_details.Include("trip_share").Where(a => a.trip_share_id == selectedTrip.trip_share_id).ToList(); if (triplist.Count == 0) { return(APIResult <List <DAL.trip_book> > .Error(ResponseCode.UserValidationField, "This trip not available for booking now!")); } foreach (var trip in triplist) { //var trip=ctx.trip_share_details.Include("trip_share").Where(a=>a.id==trip_id).FirstOrDefault(); if (trip == null) { return(APIResult <List <DAL.trip_book> > .Error(ResponseCode.UserNotFound, "This trip not found!")); } if (trip.booked_seats == null) { trip.booked_seats = 0; } if (trip.seats == trip.booked_seats) { return(APIResult <List <DAL.trip_book> > .Error(ResponseCode.UserNotAcceptable, "There are no available seat in this trip!")); } if (trip.seats - trip.booked_seats < seat) { return(APIResult <List <DAL.trip_book> > .Error(ResponseCode.UserNotAcceptable, "There are only " + (trip.seats - trip.booked_seats) + " available seat/s in this trip")); } //var requests=ctx.trip_request_details.Include("trip_request").Where(a=>) var req = new DAL.trip_request() { created_at = DateTime.Now, created_by = u.Entity.id, end_at_date = null, rider_id = u.Entity.id, seats = seat, start_at_date = trip.start_at_date, trip_type_id = trip.trip_share.trip_type_id, }; var req_details = new DAL.trip_request_details() { from_lat = trip.from_lat, from_lng = trip.from_lng, from_plc = trip.from_plc, gender_id = trip.gender_id, is_active = true, seats = seat, seat_cost_from = trip.seat_cost, seat_cost_to = trip.seat_cost, start_at_date = trip.start_at_date, start_at_time = trip.start_at_time, to_lat = trip.to_lat, to_lng = trip.to_lng, to_plc = trip.to_plc, booked = true }; req.trip_request_details.Add(req_details); ctx.trip_request.Add(req); if (ctx.SaveChanges() > 0) { for (int i = 0; i < seat; i++) { var itm = new DAL.trip_book() { trip_request_details_id = req_details.id, booked_at = DateTime.Now, seats = 1, trip_share_details_id = trip_id, trip_token = Guid.NewGuid(), }; trip.booked_seats++; ctx.Entry(trip).State = System.Data.Entity.EntityState.Modified; ctx.trip_book.Add(itm); lst.Add(itm); } ctx.SaveChanges(); } else { return(APIResult <List <DAL.trip_book> > .Error(ResponseCode.BackendDatabase, "Error while save trip_request")); } if (all_shoots != true) { return(APIResult <List <DAL.trip_book> > .Success(lst)); } } var driverDeviceID = ctx.sec_sessions.Where(a => a.user_id == selectedTrip.trip_share.driver_id && a.device_id != null).Select(a => a.device_id).Distinct().ToArray(); //var ddd = ctx.sec_sessions.Where(a => a.user_id == selectedTrip.trip_share.driver_id).ToArray(); // Logger.log(JsonConvert.SerializeObject( ddd)); await FirebaseNotifications.Send(driverDeviceID, "Seats Booking", "Someone has booked your shared seats.", new { type = 1, screen = "trip_share", id = selectedTrip.id, sender = ctx.vwProfile.FirstOrDefault(a => a.id == u.Entity.id).firebase_uid }); //FirebaseNotifications.Send(new string[] { "rP2tRzF3uKNfYrZu9YypmohBKJX2" }, "Seats Booking", "Someone has booked your shared seats.", new { type = 1, screen = "trip_share", id = 2272, sender = "PF3nbGndlZV99YyPI1J4NOs6XVE2" }); return(APIResult <List <DAL.trip_book> > .Success(lst)); } }
private bool BookIfAvailable(DAL.trip_share_details details, DAL.trip_share trip) { using (var ctx = new DAL.MainEntities()) { int searchReduis = int.Parse(Settings.Get("search_redius", "500")); var current_trips = ctx.trip_request_details.Include("trip_request").AsQueryable(); //current_trips = current_trips.Where(a => a.from_plc.Contains(details.from_plc)); //current_trips = current_trips.Where(a => (a.from_plc + ",").Contains(request.from.city + ",")); //current_trips = current_trips.Where(a => a.from_plc.Contains(request.from.street + ",")); current_trips = current_trips.Where(a => a.from_lat.Value + searchReduis <details.from_lat && a.from_lat.Value - searchReduis> details.from_lat); current_trips = current_trips.Where(a => a.from_lng.Value + searchReduis <details.from_lng && a.from_lng.Value - searchReduis> details.from_lng); //current_trips = current_trips.Where(a => a.to_plc.Contains(details.to_plc)); //current_trips = current_trips.Where(a => a.to_plc.Contains(request.to.street + ",")); current_trips = current_trips.Where(a => a.to_lat.Value + searchReduis <details.to_lat && a.to_lat.Value - searchReduis> details.to_lat); current_trips = current_trips.Where(a => a.to_lng.Value + searchReduis <details.to_lng && a.to_lng.Value - searchReduis> details.to_lng); if (details.gender_id > 0) { current_trips = current_trips.Where(a => a.gender_id == details.gender_id && a.gender_id == 0); } current_trips = current_trips.Where(a => a.trip_request.trip_type_id == trip.trip_type_id); var sTime = details.start_at_date.Value.AddMinutes(120); var rDate = details.start_at_date.Value.Date; var rTime = details.start_at_date.Value.AddMinutes(-30); current_trips = current_trips.Where(a => a.start_at_date <sTime && a.start_at_date> rTime); current_trips = current_trips.Where(a => ((a.seat_cost_from > 0 && a.seat_cost_from <= details.seat_cost) || a.seat_cost_from == 0) && ((a.seat_cost_to > 0 && a.seat_cost_to >= details.seat_cost) || a.seat_cost_to == 0)); current_trips = current_trips.Where(a => a.seats <= details.seats); current_trips = current_trips.Where(a => a.is_active == true); current_trips = current_trips.Where(a => a.booked == false || a.booked == null); if (details.booked_seats == null) { details.booked_seats = 0; } foreach (var trp in current_trips) { if (details.booked_seats >= details.seats) { break; } if (details.booked_seats + trp.seats >= details.seats) { continue; } for (var x = 0; x < trp.seats; x++) { var itm = new DAL.trip_book() { trip_request_details_id = trp.id, booked_at = DateTime.Now, seats = 1, trip_share_details_id = details.id, trip_token = Guid.NewGuid(), }; ctx.trip_book.Add(itm); } details.booked_seats++; trp.booked = true; ctx.Entry(trp).State = System.Data.Entity.EntityState.Modified; //ctx.Entry(details).State = System.Data.Entity.EntityState.Modified; } //ctx.Entry(trip) ctx.SaveChanges(); return(true); } }
public async Task <APIResult <LoginResponse> > Auth(string email, string password, string first_name, string last_name, HttpContext http, string pic = "", string network = "", string FirebaseUID = "") { using (DAL.MainEntities ctx = new DAL.MainEntities()) { //try //{ tbl_accounts dbuser = null; try { if (email != "") { dbuser = ctx.tbl_accounts.Include("sec_users").Where(a => a.email == email).FirstOrDefault(); } else if (FirebaseUID != "") { dbuser = ctx.tbl_accounts.Include("sec_users").Where(a => a.sec_users.firebase_uid == FirebaseUID).FirstOrDefault(); } if (dbuser == null) { dbuser = new tbl_accounts(); dbuser.email = email; dbuser.first_name = first_name; dbuser.last_name = last_name; dbuser.register_time = DateTime.Now; ctx.tbl_accounts.Add(dbuser); try { ctx.SaveChanges(); sec_users sec_user = new sec_users(); sec_user.pwd = password; sec_user.id = dbuser.id; sec_user.mail_verified = true; if (FirebaseUID != "") { sec_user.firebase_uid = FirebaseUID; } ctx.sec_users.Add(sec_user); ctx.SaveChanges(); } //catch (DbEntityValidationException e) //{ // return new APIResult<LoginResponse>(ResultType.fail, null, General.fetchEntityError(e)); //} catch (Exception ex) { return(APIResult <LoginResponse> .Error(ResponseCode.BackendDatabase, ex.Message + "save changes1")); } } } catch (Exception ex) { return(APIResult <LoginResponse> .Error(ResponseCode.BackendDatabase, ex.Message + "get dbuser")); } tbl_images img = ctx.tbl_images.Where(a => a.model_name == "tbl_accounts" && a.model_id == dbuser.id && a.model_tag == "main").FirstOrDefault(); if (pic != "" && img == null) { img = new tbl_images(); try { img.original = "/Storage/Original/" + DateTime.Now.ToString("yyyyMMddhhmmss") + "_" + network + ".jpg"; string imgPath = ConfigurationManager.AppSettings["mediaServer_Path"] + img.original.Replace("/", "\\"); img.large = img.original; img.thumb = img.original; img.meduim = img.original; img.model_id = dbuser.id; img.model_name = "tbl_accounts"; img.model_tag = "main"; System.Net.WebClient webClient = new System.Net.WebClient(); webClient.Encoding = System.Text.Encoding.UTF8; webClient.DownloadFile(pic, imgPath); ctx.tbl_images.Add(img); } catch (Exception ex) { // return APIResult<LoginResponse>.(ResultType.fail, null, ex.Message + "Save Image"); } try { ctx.SaveChanges(); } //catch (DbEntityValidationException e) //{ // return new APIResult<LoginResponse>(ResultType.fail, null, General.fetchEntityError(e)); //} catch (Exception ex) { // return new APIResult<LoginResponse>(ResultType.fail, null, ex.Message + "save changes2"); } } var returned = new LoginResponse { account = dbuser }; IPResult s = new IPResult(); string ip = ""; string agent = ""; IPResult iploc = new IPResult(); //if(HttpContext.Current == null) return new APIResult<LoginResponse>(ResultType.fail, null, "Null HTTPContext"); //if (http.Request == null) return APIResult<LoginResponse>.Error(ResponseCode., null, "Null HTTPRequest"); //if (http.Request.ServerVariables == null) return new APIResult<LoginResponse>(ResultType.fail, null, "Null ServerVariables"); //if (http.Request.ServerVariables.Count == 0) return new APIResult<LoginResponse>(ResultType.fail, null, "Empty ServerVariables"); //if (!http.Request.ServerVariables.AllKeys.Contains("REMOTE_ADDR")) return new APIResult<LoginResponse>(ResultType.fail, null, "REMOTE_ADDR Not in ServerVariables"); //if (!http.Request.ServerVariables.AllKeys.Contains("HTTP_USER_AGENT")) return new APIResult<LoginResponse>(ResultType.fail, null, "HTTP_USER_AGENT No in ServerVariables"); try { ip = http.Request.ServerVariables.Get("REMOTE_ADDR"); agent = http.Request.ServerVariables.Get("HTTP_USER_AGENT"); iploc = General.GetResponse("http://ip-api.com/json/" + ip); } catch (Exception ex) { return(APIResult <LoginResponse> .Error(ResponseCode.BackendServerRequest, ex.Message + "get location ip:" + ip + " agent:" + agent)); } try { //&& a.ip == ip && a.agent == agent var userSessions = ctx.sec_sessions.Where(a => a.user_id == dbuser.id && a.end_time == null).FirstOrDefault(); if (userSessions == null) { Sessions ses = new Sessions(); ses.Entity.user_id = dbuser.id; ses.Entity.ip = ip; ses.Entity.isp = iploc.isp; ses.Entity.lat = iploc.lat; ses.Entity.lon = iploc.lon; ses.Entity.timezone = iploc.timezone; ses.Entity.city = iploc.city; ses.Entity.country = iploc.country; ses.Entity.country_code = iploc.countryCode; ses.Entity.agent = agent; ctx.sec_sessions.Add(ses.Entity); ctx.SaveChanges(); dbuser.sec_users.sec_sessions = new List <sec_sessions>() { ses.Entity }; returned.token = ses.Entity.id; } else { returned.token = userSessions.id; } returned.roles = ctx.sec_users_roles.Include("sec_roles").Where(a => a.user_id == dbuser.id).Select(b => b.sec_roles.role_key).ToArray(); return(APIResult <LoginResponse> .Success(returned, "Login Success")); } catch (DbEntityValidationException e) { return(APIResult <LoginResponse> .Error(ResponseCode.BackendDatabase, General.fetchEntityError(e))); } catch (Exception ex) { return(APIResult <LoginResponse> .Error(ResponseCode.BackendDatabase, ex.Message + " Save Session")); } //} //catch (Exception ex) //{ // throw new Exception( ex.Message + "Auth"); //} } }
public APIResult <DAL.vwTripsDetails> Share(ShareSeatRequest request) { var u = APIRequest.User(HttpContext.Current.Request); if (request.start_at == null) { request.start_at = DateTime.Now; } using (var ctx = new DAL.MainEntities()) { var t = new Controllers.Trips.TripController(); checkCurrent: var currTrip = t.Current().data; if (currTrip != null) { if (currTrip.booked_seats == 0) { var trp = ctx.trip_share_details.Find(currTrip.trip_id); trp.is_active = false; ctx.Entry(trp).State = System.Data.Entity.EntityState.Modified; ctx.SaveChanges(); goto checkCurrent; } else { return(APIResult <DAL.vwTripsDetails> .Error(ResponseCode.UserNotAcceptable, "You have already trip, You cannot share new trip")); } } var Trip = new DAL.trip_share() { created_at = DateTime.Now, created_by = u.Entity.id, driver_id = u.Entity.id, start_at_date = request.start_at, trip_type_id = (int)request.trip_type, vehicle_id = request.vehicle_id, }; ctx.trip_share.Add(Trip); //if (request.shuttle_at != null) // Trip.end_at_date = request.shuttle_at.Value.Date; var Leave_Details = new DAL.trip_share_details() { from_lat = request.from.lat, from_lng = request.from.lng, from_plc = request.from.country + ", " + request.from.governorate + ", " + request.from.city + ", " + request.from.street, to_lat = request.to.lat, to_lng = request.to.lng, to_plc = request.to.country + ", " + request.to.governorate + ", " + request.to.city + ", " + request.to.street, gender_id = request.gender_id, is_active = true, seats = request.seats, seat_cost = request.seat_cost, start_at_date = request.start_at.Value, start_at_time = request.start_at.Value.TimeOfDay, trip_direction = 1, guid = Guid.NewGuid() }; Trip.trip_share_details.Add(Leave_Details); ctx.SaveChanges(); BookIfAvailable(Leave_Details, Trip); ctx.Entry(Leave_Details).State = System.Data.Entity.EntityState.Modified; if (request.trip_type == TripTypes.Round || request.trip_type == TripTypes.Shuttle) { var Round_Details = new DAL.trip_share_details() { to_lat = request.from.lat, to_lng = request.from.lng, to_plc = request.from.country + ", " + request.from.governorate + ", " + request.from.city + ", " + request.from.street, from_lat = request.to.lat, from_lng = request.to.lng, from_plc = request.to.country + ", " + request.to.governorate + ", " + request.to.city + ", " + request.to.street, gender_id = request.gender_id, is_active = true, seats = request.seats, seat_cost = request.seat_cost, start_at_date = request.round_at == null ? DateTime.Now.Date : request.round_at.Value, start_at_time = request.round_at == null ? DateTime.Now.TimeOfDay : request.round_at.Value.TimeOfDay, trip_direction = 2, guid = Guid.NewGuid() }; Trip.trip_share_details.Add(Round_Details); ctx.SaveChanges(); BookIfAvailable(Round_Details, Trip); ctx.Entry(Round_Details).State = System.Data.Entity.EntityState.Modified; } if (request.trip_type == TripTypes.Shuttle) { var cDate = request.start_at.Value.AddDays(1); var rDate = request.round_at.Value.AddDays(1); while (cDate <= request.shuttle_at.Value) { var Leave = new DAL.trip_share_details() { from_lat = request.from.lat, from_lng = request.from.lng, from_plc = request.from.country + ", " + request.from.governorate + ", " + request.from.city + ", " + request.from.street, to_lat = request.to.lat, to_lng = request.to.lng, to_plc = request.to.country + ", " + request.to.governorate + ", " + request.to.city + ", " + request.to.street, gender_id = request.gender_id, is_active = true, seats = request.seats, seat_cost = request.seat_cost, start_at_date = cDate, start_at_time = request.start_at.Value.TimeOfDay, trip_direction = 1, guid = Guid.NewGuid() }; Trip.trip_share_details.Add(Leave); ctx.SaveChanges(); BookIfAvailable(Leave, Trip); ctx.Entry(Leave).State = System.Data.Entity.EntityState.Modified; var Round = new DAL.trip_share_details() { to_lat = request.from.lat, to_lng = request.from.lng, to_plc = request.from.country + ", " + request.from.governorate + ", " + request.from.city + ", " + request.from.street, from_lat = request.to.lat, from_lng = request.to.lng, from_plc = request.to.country + ", " + request.to.governorate + ", " + request.to.city + ", " + request.to.street, gender_id = request.gender_id, is_active = true, seats = request.seats, seat_cost = request.seat_cost, start_at_date = rDate, start_at_time = request.round_at.Value.TimeOfDay, trip_direction = 2, guid = Guid.NewGuid() }; Trip.trip_share_details.Add(Round); ctx.SaveChanges(); BookIfAvailable(Round, Trip); ctx.Entry(Round).State = System.Data.Entity.EntityState.Modified; cDate = cDate.AddDays(1); rDate = rDate.AddDays(1); } } try { ctx.SaveChanges(); var data = ctx.vwTripsDetails.Where(a => a.trip_share_id == Trip.id).FirstOrDefault(); return(APIResult <DAL.vwTripsDetails> .Success(data)); } catch (Exception ex) { return(APIResult <DAL.vwTripsDetails> .Error(ResponseCode.BackendDatabase, ex.Message)); } } }
public APIResult <bool> Need(NeedSeatRequest request) { var u = APIRequest.User(HttpContext.Current.Request); if (request.start_at == null) { request.start_at = DateTime.Now; } using (var ctx = new DAL.MainEntities()) { var Trip = new DAL.trip_request() { created_at = DateTime.Now, created_by = u.Entity.id, start_at_date = request.start_at, trip_type_id = (int)request.trip_type, rider_id = u.Entity.id }; if (request.shuttle_at != null) { Trip.end_at_date = request.shuttle_at; } var Leave_Details = new DAL.trip_request_details() { from_lat = request.from.lat, from_lng = request.from.lng, from_plc = request.from.country + ", " + request.from.governorate + ", " + request.from.city + ", " + request.from.street, to_lat = request.to.lat, to_lng = request.to.lng, to_plc = request.to.country + ", " + request.to.governorate + ", " + request.to.city + ", " + request.to.street, gender_id = request.gender_id, is_active = true, seats = request.seats, seat_cost_from = request.seat_cost_from, seat_cost_to = request.seat_cost_to, start_at_date = request.start_at.Value, start_at_time = request.start_at.Value.TimeOfDay, trip_direction = 1, }; Trip.trip_request_details.Add(Leave_Details); if (request.trip_type == TripTypes.Round || request.trip_type == TripTypes.Shuttle) { var Round_Details = new DAL.trip_request_details() { to_lat = request.from.lat, to_lng = request.from.lng, to_plc = request.from.country + ", " + request.from.governorate + ", " + request.from.city + ", " + request.from.street, from_lat = request.to.lat, from_lng = request.to.lng, from_plc = request.to.country + ", " + request.to.governorate + ", " + request.to.city + ", " + request.to.street, gender_id = request.gender_id, is_active = true, seats = request.seats, seat_cost_from = request.seat_cost_from, seat_cost_to = request.seat_cost_to, start_at_date = request.round_at.Value, start_at_time = request.round_at.Value.TimeOfDay, trip_direction = 2, }; Trip.trip_request_details.Add(Round_Details); } if (request.trip_type == TripTypes.Shuttle) { var cDate = request.start_at.Value.AddDays(1); var rDate = request.round_at.Value.AddDays(1); while (cDate <= request.shuttle_at.Value) { var Leave = new DAL.trip_request_details() { from_lat = request.from.lat, from_lng = request.from.lng, from_plc = request.from.country + ", " + request.from.governorate + ", " + request.from.city + ", " + request.from.street, to_lat = request.to.lat, to_lng = request.to.lng, to_plc = request.to.country + ", " + request.to.governorate + ", " + request.to.city + ", " + request.to.street, gender_id = request.gender_id, is_active = true, seats = request.seats, seat_cost_from = request.seat_cost_from, seat_cost_to = request.seat_cost_to, start_at_date = cDate, start_at_time = request.start_at.Value.TimeOfDay, trip_direction = 1, }; Trip.trip_request_details.Add(Leave); var Round = new DAL.trip_request_details() { to_lat = request.from.lat, to_lng = request.from.lng, to_plc = request.from.country + ", " + request.from.governorate + ", " + request.from.city + ", " + request.from.street, from_lat = request.to.lat, from_lng = request.to.lng, from_plc = request.to.country + ", " + request.to.governorate + ", " + request.to.city + ", " + request.to.street, gender_id = request.gender_id, is_active = true, seats = request.seats, seat_cost_from = request.seat_cost_from, seat_cost_to = request.seat_cost_to, start_at_date = rDate, start_at_time = request.round_at.Value.TimeOfDay, trip_direction = 2, }; Trip.trip_request_details.Add(Round); cDate = cDate.AddDays(1); rDate = rDate.AddDays(1); } } ctx.trip_request.Add(Trip); try { ctx.SaveChanges(); return(APIResult <bool> .Success(true)); } catch (Exception ex) { return(APIResult <bool> .Error(ResponseCode.BackendDatabase, ex.Message)); } } }
public APIResult <IEnumerable <DAL.vwTripsDetails> > Search(SearchTripRequest request) { int searchReduis = int.Parse(Settings.Get("search_redius", "20000")); using (var ctx = new DAL.MainEntities()) { var current_trips = ctx.vwTripsDetails.Where(a => a.is_active == true).AsQueryable(); if (request.from != null) { //if (!string.IsNullOrEmpty(request.from.country)) //{ // current_trips = current_trips.Where(a => (a.from_plc + ",").Contains(request.from.country + ",")); //} //if (!string.IsNullOrEmpty(request.from.city)) //{ // current_trips = current_trips.Where(a => (a.from_plc + ",").Contains(request.from.city + ",")); //} //if (string.IsNullOrEmpty(request.from.street)) //{ // current_trips = current_trips.Where(a => (a.from_plc + ",").Contains(request.from.street + ",")); //} if (request.from.lat != 0) { decimal lat_from = request.from.lat - ((decimal)searchReduis / (decimal)1000000); decimal lat_to = request.from.lat + ((decimal)searchReduis / (decimal)1000000); current_trips = current_trips.Where(a => a.from_lat <= lat_to && a.from_lat >= lat_from); } if (request.from.lng != 0) { decimal lng_from = request.from.lng - ((decimal)searchReduis / (decimal)1000000); decimal lng_to = request.from.lng + ((decimal)searchReduis / (decimal)1000000); current_trips = current_trips.Where(a => a.from_lng <= lng_to && a.from_lng >= lng_from); } } else { if (request.firebase_ids != null && request.firebase_ids.Count() > 0) { current_trips = current_trips.Where(a => request.firebase_ids.Contains(a.acc_firebase_uid)); } } if (request.to != null) { //if (!string.IsNullOrEmpty(request.to.country)) //{ // current_trips = current_trips.Where(a => (a.to_plc + ",").Contains(request.to.country + ",")); //} //if (!string.IsNullOrEmpty(request.to.city)) //{ // current_trips = current_trips.Where(a => (a.to_plc + ",").Contains(request.to.city + ",")); //} //if (string.IsNullOrEmpty(request.to.street)) //{ // current_trips = current_trips.Where(a => (a.to_plc + ",").Contains(request.to.street + ",")); //} if (request.to.lat != 0) { decimal lat_from = request.to.lat - ((decimal)searchReduis / (decimal)1000000); decimal lat_to = request.to.lat + ((decimal)searchReduis / (decimal)1000000); current_trips = current_trips.Where(a => a.to_lat <= lat_to && a.to_lat >= lat_from); } if (request.to.lng != 0) { decimal lng_from = request.to.lng - ((decimal)searchReduis / (decimal)1000000); decimal lng_to = request.to.lng + ((decimal)searchReduis / (decimal)1000000); current_trips = current_trips.Where(a => a.to_lng <= lng_to && a.to_lng >= lng_from); } } if (request.gender_id > 0) { current_trips = current_trips.Where(a => a.trip_gender_id == request.gender_id || a.trip_gender_id == 0); } if (request.trip_type > 0) { current_trips = current_trips.Where(a => a.trip_type_id == (int)request.trip_type); } if (request.start_at == null) { var sTime = DateTime.Now.AddMinutes(120); var cDate = DateTime.Now.Date; var cTime = DateTime.Now.AddMinutes(-30); current_trips = current_trips.Where(a => a.start_at_date <sTime && a.start_at_date> cTime); } else { var sTime = request.start_at.Value.AddMinutes(120); var rDate = request.start_at.Value.Date; var rTime = request.start_at.Value.AddMinutes(-30); current_trips = current_trips.Where(a => a.start_at_date <sTime && a.start_at_date> rTime); } if (request.seat_cost_from != null) { current_trips = current_trips.Where(a => a.seat_cost >= request.seat_cost_from && a.seat_cost <= request.seat_cost_to); } if (request.seat_cost_to != null) { current_trips = current_trips.Where(a => a.seat_cost <= request.seat_cost_to); } return(APIResult <IEnumerable <DAL.vwTripsDetails> > .Success(current_trips.ToList())); } }