Ejemplo n.º 1
0
        /// <summary>
        /// Tính tiền, cho xe ra
        /// </summary>
        /// <param name="obj">Đối tượng Tra_Detail</param>
        /// <param name="day">Số ngày đậu tại bến</param>
        /// <param name="hour">Số giờ lẻ đậu tại bến</param>
        /// <param name="money">Thành tiền</param>
        /// <param name="price1">Đơn giá nửa ngày</param>
        /// <param name="price2">Đơn giá một ngày</param>
        /// <param name="isOut">Cho xe ra</param>
        /// <returns></returns>
        public DataTable InvoiceOut(Tra_Detail obj, ref int day, ref int hour, ref decimal money, ref int price1, ref int price2, bool isOut = false)
        {
            try
            {
                var res = from s in _db.Tra_Details

                          join v in _db.Tra_Vehicles on s.Tra_VehicleId equals v.Id
                          join k in _db.Tra_Kinds on v.Tra_KindId equals k.Id

                          where s.Tra_VehicleId == obj.Tra_VehicleId
                          orderby v.Number

                          select new
                          {
                              s.Id,
                              UserInName = s.Pol_UserIn.Name,
                              UserInPhone = s.Pol_UserIn.Phone,
                              UserOutName = s.Pol_UserOut.Name,
                              v.Number,

                              s.DateIn,
                              s.DateOut,
                              s.Days,
                              s.Hours,

                              v.Chair,
                              k.Name,
                              k.Tra_GroupId,
                              GroupName = k.Tra_Group.Name,
                              GroupCode = k.Tra_Group.Code,
                              k.Price1,
                              k.Price2,
                              s.Money
                          };

                var ok = res.Single(h => h.DateOut == null);

                var d = _db.Tra_Details.Single(k => k.Tra_VehicleId == obj.Tra_VehicleId && k.DateOut == null);
                TimeSpan? dt = obj.DateOut - d.DateIn; // tính số giờ đậu tại bến
                hour = dt.Value.Hours;
                day = dt.Value.Days;

                int dayL = (hour < 12) ? 1 : 0; // nhỏ hơn 12 giờ thì tính nửa ngày
                int dayF = (hour >= 12) ? day + 1 : day; // lớn hơn bằng 12 giờ thì tính một ngày

                price1 = ok.Price1;
                price2 = ok.Price2;

                int chair = ok.Chair;
                money = 0;

                switch (ok.GroupCode)
                {
                    case "A":
                        if (dayF == 0) money = price1;
                        else money = dayF * price2 + dayL * price1;
                        break;

                    case "B":
                        price1 = price2 / 2;
                        if (dayF == 0) money = price1;
                        else money = dayF * price2 + dayL * price1;
                        break;

                    case "C":
                    case "D":
                        money = (dayL + dayF) * price2;
                        break;

                    case "E":
                        money = (dayL + dayF) * price2 * chair;
                        break;

                    default:
                        break;
                }

                if (isOut)
                {
                    d.Pol_UserOutId = obj.Pol_UserOutId; // Id user đang đăng nhập
                    d.DateOut = obj.DateOut; // thời gian hiện tại trên server
                    d.Days = dayF;
                    d.Hours = hour;

                    d.Money = money;
                    d.Price1 = price1;
                    d.Price2 = price2;

                    _db.SaveChanges();
                }

                return res.ToDataTable();
            }
            catch { return null; }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Test and update driver
        /// </summary>
        /// <param name="o">Detail</param>
        /// <returns></returns>
        public object UpdateDriver(Tra_Detail o)
        {
            try
            {
                var res = _db.Tra_Details.SingleOrDefault(s => s.Id == o.Id);

                res.More = o.More;
                res.Repair = o.Repair;
                res.Show = o.Show;

                return _db.SaveChanges();
            }
            catch { return null; }
        }