Example #1
0
        public IHttpActionResult PutTripDriver(int id, TripDriver tripDriver)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != tripDriver.TripDriverID)
            {
                return(BadRequest());
            }

            db.Entry(tripDriver).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TripDriverExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Example #2
0
        private async void CreateClick(Object sender, EventArgs e)
        {
            if (ValidateData())
            {
                iTrip.distance = distanceValue;
                iTrip.duration = durationValue;
                iTrip.cost     = Double.Parse(txtviewCost.Text.ToString().Substring(2, txtviewCost.Text.ToString().Length - 2),
                                              System.Globalization.CultureInfo.InvariantCulture);
                iTrip.distanceStr = txtviewDistance.Text.ToString();
                iTrip.durationStr = txtviewDuration.Text.ToString();
                iTrip.costStr     = txtviewCost.Text.ToString();
                // Assign user input and request POST to REST API
                iTrip.arriveTime = onTimeSet.ToString();
                iTrip.days       = tvDay.Text.ToString();

                if (switchFemaleOnly.Checked)
                {
                    iTrip.femaleOnly = "Yes";
                }
                else
                {
                    iTrip.femaleOnly = "No";
                }

                TripDriver    tripDriver;
                TripPassenger tripPassenger;

                progress.SetMessage("Creating trip...");
                RunOnUiThread(() =>
                {
                    progress.Show();
                });
                if (iMember.type.Equals("Driver"))
                {
                    tripDriver               = new TripDriver(iTrip);
                    tripDriver.DriverID      = iMember.MemberID;
                    tripDriver.availableSeat = int.Parse(spinnerSeat.SelectedItem.ToString());
                    var json = JsonConvert.SerializeObject(tripDriver);
                    await RESTClient.CreateTripDriverAsync(this, tripDriver);
                }
                else
                {
                    tripPassenger             = new TripPassenger(iTrip);
                    tripPassenger.PassengerID = iMember.MemberID;
                    var json = JsonConvert.SerializeObject(tripPassenger);
                    await RESTClient.CreateTripPassengerAsync(this, tripPassenger);
                }
                RunOnUiThread(() =>
                {
                    progress.Dismiss();
                });
                Intent intent = new Intent(this, typeof(MainActivity));
                intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask);
                StartActivity(intent);
                Finish();
            }
        }
Example #3
0
        public static async Task UpdateTripDriverAsync(TripDriver tripDriver)
        {
            HttpResponseMessage response = await client.PutAsJsonAsync("api/TripDrivers?id=" +
                                                                       tripDriver.TripDriverID, tripDriver);

            if (!response.IsSuccessStatusCode)
            {
                Console.WriteLine("Error occur when updating trip driver");
            }
        }
Example #4
0
        public IHttpActionResult GetTripDriver(int id)
        {
            TripDriver tripDriver = db.TripDrivers.Find(id);

            if (tripDriver == null)
            {
                return(NotFound());
            }

            return(Ok(tripDriver));
        }
Example #5
0
        public IHttpActionResult PostTripDriver(TripDriver tripDriver)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.TripDrivers.Add(tripDriver);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = tripDriver.TripDriverID }, tripDriver));
        }
Example #6
0
        //TripDriver
        public static async Task CreateTripDriverAsync(Context c, TripDriver tripDriver)
        {
            HttpResponseMessage response = await client.PostAsJsonAsync("api/TripDrivers", tripDriver);

            if (response.IsSuccessStatusCode)
            {
                Toast.MakeText(c, "Trip successfully created.", ToastLength.Short).Show();
            }
            else
            {
                Toast.MakeText(c, "Failed to create driver's trip.", ToastLength.Short).Show();
            }
        }
Example #7
0
        public static async Task UpdateTripDriverAsync(Context c, TripDriver tripDriver)
        {
            HttpResponseMessage response = await client.PutAsJsonAsync("api/TripDrivers?id=" +
                                                                       tripDriver.TripDriverID, tripDriver);

            if (response.IsSuccessStatusCode)
            {
                Toast.MakeText(c, "Updated trip details.", ToastLength.Short).Show();
            }
            else
            {
                Toast.MakeText(c, "Failed to update.", ToastLength.Short).Show();
            }
        }
Example #8
0
        public IHttpActionResult PutTripDriver(int id, string tripPassengerID, TripDriver tripDriver)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != tripDriver.TripDriverID)
            {
                return(BadRequest());
            }

            db.Entry(tripDriver).State = EntityState.Modified;

            // Remove TripPassengerID from the TripDriver data
            string[] tripPassengerIDs = tripPassengerID.Split(',');
            foreach (string tempID in tripPassengerIDs)
            {
                int           tID           = int.Parse(tempID);
                TripPassenger tripPassenger = (from t in db.TripPassengers
                                               where t.TripPassengerID == tID
                                               select t).First();
                tripPassenger.TripDriverID = null;

                // Remove the particular request
                Request request = (from t in db.Requests
                                   where t.SenderID == tID &&
                                   t.DriverID == id
                                   select t).First();
                db.Requests.Remove(request);
            }

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TripDriverExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
 public static async Task AcknowledgeTripViaQueueTrigger(
     [OrchestrationClient] DurableOrchestrationClient context,
     [QueueTrigger("%TripDriversQueue%", Connection = "AzureWebJobsStorage")] TripDriver info,
     ILogger log)
 {
     try
     {
         await context.RaiseEventAsync(info.TripCode, Constants.TRIP_DRIVER_ACCEPT_EVENT, info.DriverCode);
     }
     catch (Exception ex)
     {
         var error = $"AcknowledgeTripViaQueueTrigger failed: {ex.Message}";
         log.LogError(error);
     }
 }
Example #10
0
        public IHttpActionResult PutTripPassenger(int id, int tripDriverID, TripPassenger tripPassenger)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != tripPassenger.TripPassengerID)
            {
                return(BadRequest());
            }

            db.Entry(tripPassenger).State = EntityState.Modified;

            // Remove TripPassengerID from the TripDriver data
            TripDriver tripDriver = (from t in db.TripDrivers
                                     where t.TripDriverID == tripDriverID
                                     select t).First();

            string[] passengers = tripDriver.PassengerIDs.ToString().Split(',').Where(s => s != tripPassenger.TripPassengerID.ToString()).ToArray();
            tripDriver.PassengerIDs = string.Join(",", passengers);

            // Remove the particular request
            Request request = (from t in db.Requests
                               where t.SenderID == tripPassenger.TripPassengerID &&
                               t.DriverID == tripDriverID
                               select t).First();

            db.Requests.Remove(request);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TripPassengerExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
Example #11
0
        public static async Task DisjoinAllPassengerAsync(Context c, TripDriver tripDriver)
        {
            string passengerIDs = tripDriver.PassengerIDs;

            tripDriver.PassengerIDs = string.Empty;
            HttpResponseMessage response = await client.PutAsJsonAsync("api/TripDrivers?id=" +
                                                                       tripDriver.TripDriverID + "&tripPassengerID=" + passengerIDs, tripDriver);

            if (response.IsSuccessStatusCode)
            {
                Toast.MakeText(c, "Disjoin all passengers.", ToastLength.Short).Show();
            }
            else
            {
                Toast.MakeText(c, "Failed to disjoin.", ToastLength.Short).Show();
            }
        }
        public static void AssignDriver([ActivityTrigger] TripItem trip,
                                        [Queue("trip-drivers", Connection = "AzureWebJobsStorage")] out TripDriver queueInfo,
                                        ILogger log)
        {
            log.LogInformation($"AssignDriver for {trip.Code} starting....");

            // Find a random driver
            var driver = trip.AvailableDrivers[_rnd.Next(trip.AvailableDrivers.Count)];

            if (driver == null)
            {
                throw new Exception("Driver index is out of range!!!");
            }

            // Enqueue the trip code to be monitored
            queueInfo = new TripDriver()
            {
                TripCode   = trip.Code,
                DriverCode = driver.Code
            };
        }
Example #13
0
        public IHttpActionResult DeleteTripDriver(int id)
        {
            TripDriver tripDriver = db.TripDrivers.Find(id);

            if (tripDriver == null)
            {
                return(NotFound());
            }

            if (!string.IsNullOrEmpty(tripDriver.PassengerIDs))
            {
                // Remove TripPassengerID from the TripDriver data
                string[] tripPassengerIDs = tripDriver.PassengerIDs.Split(',');
                foreach (string tempID in tripPassengerIDs)
                {
                    int           tID           = int.Parse(tempID);
                    TripPassenger tripPassenger = (from t in db.TripPassengers
                                                   where t.TripPassengerID == tID
                                                   select t).First();
                    tripPassenger.TripDriverID = null;

                    // Remove the particular request
                    List <Request> requests = (from t in db.Requests
                                               where t.DriverID == id
                                               select t).ToList();
                    foreach (Request tempRequest in requests)
                    {
                        db.Requests.Remove(tempRequest);
                    }
                }
                db.SaveChanges();
            }
            db.TripDrivers.Remove(tripDriver);
            db.SaveChanges();

            return(Ok(tripDriver));
        }
Example #14
0
        public IHttpActionResult DeleteTripPassenger(int id)
        {
            TripPassenger tripPassenger = db.TripPassengers.Find(id);

            if (tripPassenger == null)
            {
                return(NotFound());
            }

            if (!tripPassenger.TripDriverID.Equals(null))
            {
                if (!tripPassenger.TripDriverID.Equals(""))
                {
                    // Remove TripPassengerID from the TripDriver data
                    TripDriver tripDriver = (from t in db.TripDrivers
                                             where t.TripDriverID == tripPassenger.TripDriverID
                                             select t).First();
                    string[] passengers = tripDriver.PassengerIDs.ToString().Split(',').Where(s => s != id.ToString()).ToArray();
                    tripDriver.PassengerIDs = string.Join(",", passengers);
                    if (string.IsNullOrEmpty(tripDriver.PassengerIDs))
                    {
                        tripDriver.PassengerIDs = string.Empty;
                    }

                    // Remove the particular request
                    Request request = (from t in db.Requests
                                       where t.SenderID == tripPassenger.TripPassengerID &&
                                       t.DriverID == tripPassenger.TripDriverID
                                       select t).First();
                    db.Requests.Remove(request);
                }
            }
            db.TripPassengers.Remove(tripPassenger);
            db.SaveChanges();

            return(Ok(tripPassenger));
        }
        public async void UpdateTripDetail(Object sender, EventArgs e)
        {
            Android.Net.ConnectivityManager cm = (Android.Net.ConnectivityManager) this.GetSystemService(Context.ConnectivityService);
            if (cm.ActiveNetworkInfo == null)
            {
                Toast.MakeText(this, "Network error. Try again later.", ToastLength.Long).Show();
            }
            else
            {
                iTripDetail.originLatLng      = originLatLng.Latitude.ToString() + "," + originLatLng.Longitude.ToString();
                iTripDetail.destinationLatLng = destLatLng.Latitude.ToString() + "," + destLatLng.Longitude.ToString();
                iTripDetail.arriveTime        = onTimeSet.ToString();
                iTripDetail.days = tvDay.Text.ToString();

                string duration = txtviewDuration.Text.ToString();
                int    totalInSecond;
                // If duration is more than 1 hour
                if (duration.Length > 8)
                {
                    int hour = int.Parse(duration.Substring(0, duration.Length - 14));
                    int min  = int.Parse(duration.Substring(duration.Length - 7, 2).Trim());
                    totalInSecond = (hour * 3600) + (min * 60);
                }
                else
                {
                    int min = int.Parse(duration.Substring(0, duration.Length - 5).Trim());
                    totalInSecond = min * 60;
                }
                iTripDetail.duration = totalInSecond;
                iTripDetail.cost     = Double.Parse(txtviewCost.Text.ToString().Substring(2, txtviewCost.Text.ToString().Length - 2),
                                                    System.Globalization.CultureInfo.InvariantCulture);

                iTripDetail.distanceStr   = txtviewDistance.Text.ToString();
                iTripDetail.durationStr   = txtviewDuration.Text.ToString();
                iTripDetail.costStr       = txtviewCost.Text.ToString();
                iTripDetail.availableSeat = int.Parse(spinnerSeat.SelectedItem.ToString());

                if (switchFemaleOnly.Checked)
                {
                    iTripDetail.femaleOnly = "Yes";
                }
                else
                {
                    iTripDetail.femaleOnly = "No";
                }

                RunOnUiThread(() =>
                {
                    progress.Show();
                });
                TripDriver tripDriver = new TripDriver(iTripDetail);
                await RESTClient.UpdateTripDriverAsync(this, tripDriver);

                RunOnUiThread(() =>
                {
                    progress.Dismiss();
                });

                Intent intent = new Intent(this, typeof(TripDriverListViewActivity));
                intent.AddFlags(ActivityFlags.ClearTop);
                this.StartActivity(intent);
            }
        }
Example #16
0
        public override View GetView(int position, View convertView, ViewGroup parent)
        {
            var view = convertView;

            if (view == null)
            {
                view = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.TripDriverDetailsRow, parent, false);

                var femaleOnly = view.FindViewById <TextView>(Resource.Id.trip_driver_row_female);
                var origin     = view.FindViewById <TextView>(Resource.Id.trip_driver_row_origin);
                var dest       = view.FindViewById <TextView>(Resource.Id.trip_driver_row_destination);
                var day        = view.FindViewById <TextView>(Resource.Id.trip_driver_row_day);
                var arriveTime = view.FindViewById <TextView>(Resource.Id.trip_driver_row_time);
                var distance   = view.FindViewById <TextView>(Resource.Id.trip_driver_row_distance);
                var duration   = view.FindViewById <TextView>(Resource.Id.trip_driver_row_duration);
                var cost       = view.FindViewById <TextView>(Resource.Id.trip_driver_row_cost);
                var button     = view.FindViewById <TextView>(Resource.Id.trip_driver_row_button);
                var seat       = view.FindViewById <TextView>(Resource.Id.trip_driver_row_seat);

                view.Tag = new TripDriverViewHolder()
                {
                    Female     = femaleOnly,
                    Origin     = origin,
                    Dest       = dest,
                    Day        = day,
                    ArriveTime = arriveTime,
                    Distance   = distance,
                    Duration   = duration,
                    Cost       = cost,
                    Seat       = seat,
                    mButton    = button
                };
            }

            var holder = (TripDriverViewHolder)view.Tag;

            // Convert time to hh:mm tt format
            var      time          = trips[position].arriveTime.Split(':');
            int      totalInSecond = (int.Parse(time[0]) * 3600) + (int.Parse(time[1]) * 60);
            TimeSpan onTimeSet     = TimeSpan.FromSeconds(totalInSecond);
            string   strTime       = DateTime.ParseExact(onTimeSet.ToString(@"hh\:mm"), "HH:mm", null).ToString("hh:mm tt", CultureInfo.GetCultureInfo("en-US"));

            // Convert "Mon,Tue,Wed..." to "Mon • Tue • Wed..." format
            string strDay = trips[position].days.Replace(",", " • ");

            // Check if is female only
            if (trips[position].femaleOnly.Equals("No"))
            {
                holder.Female.SetHeight(0);
                holder.Female.Visibility = ViewStates.Invisible;
            }

            holder.Origin.Text     = trips[position].origin;
            holder.Dest.Text       = trips[position].destination;
            holder.Day.Text        = strDay;
            holder.ArriveTime.Text = strTime;
            holder.Distance.Text   = trips[position].distanceStr;
            holder.Duration.Text   = " • Approx " + trips[position].durationStr;
            holder.Cost.Text       = trips[position].costStr;

            int totalPassenger = 0;
            int totalSeat      = trips[position].availableSeat;

            if (trips[position].PassengerIDs != null && !String.IsNullOrEmpty(trips[position].PassengerIDs))
            {
                string[] passengers = trips[position].PassengerIDs.Split(',');
                totalPassenger = passengers.Count();
            }
            holder.Seat.Text = totalPassenger + "/" + totalSeat;

            if (trips[position].Requests.Count <= 0)
            {
                holder.mButton.Text = "No Request";
            }
            else
            {
                bool hasPending = false;
                foreach (Request r in trips[position].Requests)
                {
                    if (r.status.Equals("Pending"))
                    {
                        hasPending = true;
                    }
                }
                if (hasPending)
                {
                    holder.mButton.Text = "View Request";
                }
                else
                {
                    holder.mButton.Text = "No Request";
                }
            }

            holder.mButton.Click += (sender, e) =>
            {
                Android.Net.ConnectivityManager cm = (Android.Net.ConnectivityManager)context.GetSystemService(Context.ConnectivityService);
                if (cm.ActiveNetworkInfo == null)
                {
                    Toast.MakeText(context, "Network error. Try again later.", ToastLength.Long).Show();
                }
                else if (holder.mButton.Text.Equals("No Request"))
                {
                    Toast.MakeText(context, "There is no request yet. Try again later.", ToastLength.Long).Show();
                }
                else if (holder.mButton.Text.Equals("View Request"))
                {
                    Intent intent = new Intent(context, typeof(RequestListViewActivity));
                    intent.AddFlags(ActivityFlags.ReorderToFront);
                    intent.PutExtra("Trip", JsonConvert.SerializeObject(trips[position]));
                    ((Activity)context).StartActivityForResult(intent, 0);
                }
            };

            view.Click += (sender, e) =>
            {
                Android.Net.ConnectivityManager cm = (Android.Net.ConnectivityManager)context.GetSystemService(Context.ConnectivityService);
                if (cm.ActiveNetworkInfo == null)
                {
                    Toast.MakeText(context, "Network error. Try again later.", ToastLength.Long).Show();
                }
                else
                {
                    Intent intent = new Intent(context, typeof(TripDriverDetailsRow_Edit));
                    // Send intent extra to notify the trip is editable
                    // Condition = no passenger in the trip yet AND no passenger send request for this trip
                    if (totalPassenger == 0 && holder.mButton.Text.Equals("No Request"))
                    {
                        intent.PutExtra("Status", "No Request");
                    }
                    else if (totalPassenger != 0 && holder.mButton.Text.Equals("No Request"))
                    {
                        intent.PutExtra("Status", "Has Passenger");
                    }

                    intent.PutExtra("Trip", JsonConvert.SerializeObject(trips[position]));
                    ((Activity)context).StartActivityForResult(intent, 0);
                }
            };

            view.LongClick += (sender, e) =>
            {
                Dialog dialog = new Dialog(context);
                dialog.SetContentView(Resource.Layout.Custom_Dialog_Action);
                TextView disjoinPassenger = (TextView)dialog.FindViewById(Resource.Id.quit);
                TextView deleteTrip       = (TextView)dialog.FindViewById(Resource.Id.delete);
                disjoinPassenger.Text = "Disjoin Passengers";

                if (string.IsNullOrEmpty(trips[position].PassengerIDs))
                {
                    disjoinPassenger.Visibility = ViewStates.Gone;
                }

                disjoinPassenger.Click += async(sender2, e2) =>
                {
                    progress.SetMessage("Disjoining passengers.....");
                    progress.Show();
                    TripDriver td = new TripDriver(trips[position]);
                    await RESTClient.DisjoinAllPassengerAsync(context, td);

                    Intent intent = new Intent(context, typeof(TripDriverListViewActivity));
                    ((Activity)context).Finish();
                    ((Activity)context).StartActivity(intent);
                    progress.Dismiss();
                    dialog.Dismiss();
                };

                deleteTrip.Click += async(sender2, e2) =>
                {
                    progress.SetMessage("Deleting trip.....");
                    progress.Show();
                    await RESTClient.DeleteTripDriverAsync(context, (int)trips[position].TripDriverID);

                    Intent intent = new Intent(context, typeof(TripDriverListViewActivity));
                    ((Activity)context).Finish();
                    ((Activity)context).StartActivity(intent);
                    progress.Dismiss();
                    dialog.Dismiss();
                };
                dialog.Show();
            };
            return(view);
        }