Ejemplo n.º 1
0
 public async Task <IApiResult> GetDeviceInfo(int deviceid)
 {
     P_Devices.PDevicesByDeviceID pars = new P_Devices.PDevicesByDeviceID
     {
         deviceid = deviceid
     };
     return(await ApiAsync(pars, new BLL.DeviceManager.Device().GetDeviceInfo));
 }
Ejemplo n.º 2
0
 public async Task <IApiResult> EndRental(int deviceid)
 {
     P_Devices.PDevicesByDeviceID pars = new P_Devices.PDevicesByDeviceID
     {
         deviceid = deviceid
     };
     return(await ApiAsync(pars, new BLL.DeviceManager.Device().EndRental));
 }
Ejemplo n.º 3
0
        public Task <IApiResult> GetDevice(P_Devices.PDevicesByDeviceID arg)
        {
            return(Task.Run(() =>
            {
                IApiResult hr = new IApiResult();
                try
                {
                    using (CarRentEntities cre = new CarRentEntities())
                    {
                        Func <double, double, bool> inoutChina = (lat, lng) => Mgoo.CarRent.Position.ZCChinaLocation.InOutChina(Convert.ToDouble(lat), Convert.ToDouble(lng));

                        var devs = from d in cre.Devices
                                   join l in cre.LKLocation
                                   on d.DeviceID equals l.DeviceID
                                   into dl
                                   from dli in dl.DefaultIfEmpty()
                                   where d.DeviceID == arg.deviceid && d.Deleted == false
                                   // let po =   new Position.Point(Convert.ToDouble(dli.OLat ?? -1.00m), Convert.ToDouble(dli.OLng ?? -1.00m))
                                   //let isChina = inoutChina(po.Lat, po.Lng)
                                   //let point = isChina ? new Position.Point(po.Lat, po.Lng) : Position.PositionUtil.gps84_To_Gcj02(po.Lat, po.Lng)
                                   select new Models.Return.R_Devices.GetDevice_Result
                        {
                            DeviceID = d.DeviceID,
                            DeviceName = d.DeviceName,
                            SerialNumber = d.SerialNumber,
                            Status = d.Status,
                            DataContext = dli.DataContext ?? "",
                            Lat = dli.OLat ?? -1.00m,
                            Lng = dli.OLng ?? -1.00m,
                            Speed = dli.Speed ?? default(decimal),
                            LastCommunication = dli.LastCommunication == null ? default(DateTime) : dli.LastCommunication,
                            Course = dli.Course ?? default(decimal),
                            IsStop = dli.IsStop ?? default(int)
                        };
                        var list = devs.ToList();
                        list.ForEach((item) =>
                        {
                            //如果是在中国大陆则需要转换一下坐标
                            if (Position.ZCChinaLocation.InOutChina(Convert.ToDouble(item.Lat), Convert.ToDouble(item.Lng)))
                            {
                                Position.Point point = Position.PositionUtil.gps84_To_Gcj02(Convert.ToDouble(item.Lat), Convert.ToDouble(item.Lng));
                                item.Lng = Convert.ToDecimal(point.Lng);
                                item.Lat = Convert.ToDecimal(point.Lat);
                            }
                        });
                        hr.result = list;
                        hr.message = $"查询到{list.Count}条数据.";
                    }
                }
                catch (Exception ex)
                {
                    hr.message = ex.Message;
                    hr.code = StatusCode.error;
                    Log.Error(this, ex);
                }
                return hr;
            }));
        }
Ejemplo n.º 4
0
        public Task <IApiResult> EndRental(P_Devices.PDevicesByDeviceID arg)
        {
            return(Task.Run(() =>
            {
                IApiResult hr = new IApiResult();
                using (CarRentEntities db = new CarRentEntities())
                {
                    try
                    {
                        var leaser = (from lr in db.LeaseRecord where lr.DeviceID == arg.deviceid && lr.Status == 2 select lr).SingleOrDefault();
                        if (leaser == null)
                        {
                            hr.message = "Can not find element.";//未找到状态为 2 的设备
                            hr.code = StatusCode.failure;
                            return hr;
                        }
                        var dev = (from d in db.Devices where d.DeviceID == leaser.DeviceID select d).Single();
                        var user = db.Users.Find(dev.UserID);
                        var endTime = DateTime.Now;
                        TimeSpan ts = (endTime - leaser.StartTime).Value;
                        if (ts.TotalMinutes <= 5)
                        {
                            hr.message = "Free for five minutes!";
                        }
                        else
                        {
                            ///结束租车后,扣除用户余额里面的 点数
                            var mi = Math.Ceiling((ts.TotalMinutes - 5) / 60);
                            var money = Convert.ToInt32(mi * user.ActivationCount);
                            leaser.Fee = money;
                            user.MoneyCount = user.MoneyCount - money;
                            hr.message = "Charges are successful!";
                        }

                        dev.Status = 0;                                                //Status (1:已租,0:未租)
                        leaser.Status = CarRent.Common.Lib.CarStatus.Complete.toInt(); //1 已申请,等待确认,2 正在出租,3出租完成,4已拒绝
                        leaser.EndTime = endTime;
                        db.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        hr.message = ex.Message;
                        hr.code = StatusCode.error;
                    }
                }
                return hr;
            }));
        }
Ejemplo n.º 5
0
 /// <summary>
 /// 编辑,根据设备ID查询设备信息
 /// </summary>
 /// <param name="arg"></param>
 /// <returns></returns>
 public Task <IApiResult> GetDeviceInfo(P_Devices.PDevicesByDeviceID arg)
 {
     return(Task.Run(() =>
     {
         IApiResult ar = new IApiResult();
         try
         {
             using (DAL.CarRentEntities db = new CarRentEntities())
             {
                 var query = from d in db.Devices
                             join u in db.Users
                             on d.UserID equals u.UserID
                             join g in db.Groups
                             on d.GroupID equals g.GroupID
                             where (d.DeviceID == arg.deviceid)
                             select new
                 {
                     d.GroupID,
                     g.GroupName,
                     d.DeviceName,
                     u.UserName,
                     d.SerialNumber,
                     d.Created,
                     d.PhoneNum,
                     d.Description
                 };
                 ar.result = query.ToList();
             }
         }
         catch (Exception ex)
         {
             Log.Error(this, ex);
             ar.code = Interface.StatusCode.error;
             ar.message = ex.Message;
         }
         return ar;
     }));
 }