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)); }
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)); }
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; })); }
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; })); }
/// <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; })); }