示例#1
0
 public static void CreateModel(Model.EbikeOperatingInfo operInfo, ref Model.Ride ride)
 {
     ride.TerminalID = operInfo.TerminalID;
     ride.EventID    = operInfo.EventID;
     ride.StartTime  = operInfo.SamplingTime;
     ride.EndTime    = operInfo.SamplingTime + 30; //默认至少骑行30S
     ride.Duration   = 30;
 }
示例#2
0
        /// <summary>
        /// 注意此处的EventID,需要在调用时判断好
        /// </summary>
        /// <param name="operInfo"></param>
        /// <returns></returns>

        public static int UpdateOrCreate(Model.EbikeOperatingInfo operInfo)
        {
            int result = 0;

            using (var context = new DefaultDbContext())
            {
                var ride = context.Ride.FirstOrDefault(c => c.EventID == operInfo.EventID);
                if (ride == null)
                {
                    ride = new Model.Ride();
                    Business.Ride.CreateModel(operInfo, ref ride);

                    context.Ride.Add(ride);
                }
                else //更新充电时长
                {
                    Business.Ride.UpdateModel(operInfo, ref ride);
                    context.Ride.Update(ride);
                }
                result = context.SaveChanges();
            }
            return(result);
        }
示例#3
0
        protected void btnPay_Click(object sender, EventArgs e)
        {
            if (clStartDate.SelectedDate != DateTime.MinValue && clEndDate.SelectedDate != DateTime.MinValue)
            {
                if(clStartDate.SelectedDate <= DateTime.Now)
                {
                    lblInfo.Text = "Start date should be after than today.";
                }
                else if(clStartDate.SelectedDate > clEndDate.SelectedDate)
                {
                    lblInfo.Text = "You cannot select the end date before the star date.";
                }
                else
                {
                    Model.Ride r = new Model.Ride()
                    {
                        PassengerId = u.Id,
                        DriverId = v.DriverId,
                        Description = txtDescription.Text.Trim(),
                        StartDate = clStartDate.SelectedDate,
                        EndDate = clEndDate.SelectedDate,
                        Charge = v.Cost * (clEndDate.SelectedDate - clStartDate.SelectedDate).TotalDays, //Calculate charge based on the number of days for ride.
                    };

                    bool result = Model.RideDb.Save(r);

                    if (result)
                        Response.Redirect("PaymentCompleted.aspx");
                    else
                        lblInfo.Text = "An error has been occured while saving your ride.";
                }
            }
            else
            {
                lblInfo.Text = "Make sure that you have selected start and end date of your trip.";
            }
        }
示例#4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["UserKey"] != null)
            {
                u = Model.UserDb.GetUserById(Session["UserKey"]);
                Master.LabelOnMasterPage.Text = u.FullName;

                // If the userType is not Passenger, redirect to main page.
                if (u.UserType != 1)
                {
                    Response.Redirect("Default.aspx");
                }
                else
                {
                    if (Request.QueryString["id"] != "")
                    {
                        int rideId = Convert.ToInt32(Request.QueryString["id"]);

                        r = Model.RideDb.GetRideById(rideId);

                        if(r == null)
                            Response.Redirect("Default.aspx");

                        lblDriverName.Text = Model.UserDb.GetUserById(r.DriverId).FullName;
                        lblModel.Text = Model.VehicleDb.getVehicleByUserId(r.DriverId).Model;
                        lblCost.Text = r.Charge.ToString();
                        lblStartDate.Text = r.StartDate.ToString("dd MMMM yyyy", new CultureInfo("en-US"));
                        lblEndDate.Text = r.EndDate.ToString("dd MMMM yyyy", new CultureInfo("en-US"));

                        userReview = Model.ReviewDb.GetReviewByRideId(r.Id);

                        if (userReview != null)
                        {
                            if (!IsPostBack) // This control is needed for update process.
                            {
                                rblVote.SelectedValue = userReview.Vote.ToString();
                                txtComment.Text = userReview.Comment;
                            }

                            btnSend.Visible = false;
                            btnUpdate.Visible = true;
                        }
                        else
                        {
                            btnSend.Visible = true;
                            btnUpdate.Visible = false;
                        }
                    }
                    else
                    {
                        Response.Redirect("Default.aspx");
                    }
                }
            }
            else
            {
                Response.Redirect("Default.aspx");
            }
        }
示例#5
0
 public static void UpdateModel(Model.EbikeOperatingInfo operInfo, ref Model.Ride ride)
 {
     ride.EndTime  = operInfo.SamplingTime;
     ride.Duration = (int)(operInfo.SamplingTime - ride.StartTime);
 }
示例#6
0
        public static void Update(JObject jobj)
        {
            long   terminalID     = (long)jobj["TerminalID"];
            string eventID        = jobj["EventID"].ToString();
            string preEventID     = jobj.GetValue("PreEventID") == null?"": jobj["PreEventID"].ToString();
            long   samplingTime   = (long)jobj["SamplingTime"];
            double staticVoltageA = Math.Round((double)jobj["StaticVoltageA"], 2);
            int    status         = (int)jobj["Status"];

            Model.EbikeOperatingInfo operInfo = new Model.EbikeOperatingInfo();
            operInfo.TerminalID   = terminalID;
            operInfo.EventID      = eventID;
            operInfo.PreEventID   = preEventID;
            operInfo.SamplingTime = samplingTime;
            operInfo.Voltage      = staticVoltageA;
            operInfo.Status       = status;


            //充电开始
            if (status == 4 || status == 8)
            {
                var charge = new Model.Charge();
                Business.Charge.CreateModel(operInfo, ref charge);

                using (var context = new DefaultDbContext())
                {
                    context.Charge.Add(charge);
                    context.SaveChanges();

                    if (!eventID.Equals(preEventID) && status == 8)
                    {
                        operInfo.EventID = operInfo.PreEventID; //修改事件ID为上一次事件ID
                        Business.Ride.UpdateOrCreate(operInfo);
                    }
                }
            }
            // 骑行开始
            else if (status == 1 || status == 7)
            {
                Model.Ride ride = new Model.Ride();

                Business.Ride.CreateModel(operInfo, ref ride);

                using (var context = new DefaultDbContext())
                {
                    context.Ride.Add(ride);
                    context.SaveChanges();

                    if (!eventID.Equals(preEventID) && status == 7)
                    {
                        //暂时不分析停车,因为停车时长暂时不主要分析
                        operInfo.EventID = operInfo.PreEventID; //修改事件ID为上一次事件ID
                        Business.Charge.UpdateOrCreate(operInfo);
                    }
                }
            }
            //更新充电时长
            else if (status == 5)
            {
                Business.Charge.UpdateOrCreate(operInfo);
            }
            //更新骑行时长
            else if (status == 2)
            {
                Business.Ride.UpdateOrCreate(operInfo);
            }
            //骑行结束
            else if (status == 3)
            {
                operInfo.EventID = operInfo.PreEventID;
                Business.Ride.UpdateOrCreate(operInfo);
            }
            //骑行结束
            else if (status == 6)
            {
                operInfo.EventID = operInfo.PreEventID;
                Business.Charge.UpdateOrCreate(operInfo);
            }
        }