Ejemplo n.º 1
0
        /// <summary>
        /// 卡片发行
        /// </summary>
        /// <param name="info"></param>
        /// <param name="releaseMoney"></param>
        /// <param name="paymentMode"></param>
        /// <param name="memo"></param>
        /// <param name="keepParkingStatus">是否保持卡片运行状态</param>
        /// <returns></returns>
        public CommandResult CardRelease(CardInfo info, decimal releaseMoney, PaymentMode paymentMode, string memo, bool keepParkingStatus)
        {
            string            op       = OperatorInfo.CurrentOperator.OperatorName;
            string            station  = WorkStationInfo.CurrentStation.StationName;
            IUnitWork         unitWork = ProviderFactory.Create <IUnitWork>(_RepoUri); //工作单元
            CardReleaseRecord record   = new CardReleaseRecord
            {
                CardID          = info.CardID,
                OwnerName       = info.OwnerName,
                CardCertificate = info.CardCertificate,
                CarPlate        = info.CarPlate,
                ReleaseDateTime = DateTime.Now,
                CardType        = info.CardType,
                ReleaseMoney    = releaseMoney,
                PaymentMode     = paymentMode,
                Balance         = info.Balance,
                ActivationDate  = info.ActivationDate,
                ValidDate       = info.ValidDate,
                HolidayEnabled  = info.HolidayEnabled,
                Deposit         = info.Deposit,
                OperatorID      = op,
                StationID       = station,
                Memo            = memo
            };

            ProviderFactory.Create <ICardReleaseRecordProvider>(_RepoUri).Insert(record, unitWork);
            info.Release();
            ICardProvider icp     = ProviderFactory.Create <ICardProvider>(_RepoUri);
            CardInfo      origial = icp.GetByID(info.CardID).QueryObject;

            if (origial == null)
            {
                icp.Insert(info, unitWork);
            }
            else if (keepParkingStatus)
            {
                UpdateCard(info, unitWork);
            }
            else
            {
                UpdateCardAll(info, unitWork);
            }
            return(unitWork.Commit());
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 保存车单
        /// </summary>
        /// <param name="sheetID"></param>
        /// <param name="employeeNum"></param>
        /// <param name="employeeName"></param>
        /// <param name="telPhone"></param>
        /// <param name="department"></param>
        /// <param name="carPlate"></param>
        /// <param name="status"></param>
        /// <param name="activationDate"></param>
        /// <param name="accessID"></param>
        /// <returns></returns>
        private InterfaceReturnCode _SaveSheet(string sheetID, string employeeNum, string employeeName, string telPhone, string department, string carPlate,
                                               byte status, string activationDate, string places, bool enableLimitation, double limitation)
        {
            DateTime activation;

            if (string.IsNullOrEmpty(employeeNum) ||
                !DateTime.TryParse(activationDate, out activation))
            {
                return(InterfaceReturnCode.ParameterError);
            }

            //卡片状态  = 1 Enabled 已发行, = 3 Disabled 禁用,
            byte cardStatus = (byte)(status == 0 ? 3 : 1);

            //先查询停车地点的权限组
            int accessID = GetAccessID(places);

            if (accessID == -1)
            {
                accessID = 0;
            }

            ICardProvider          provider = ProviderFactory.Create <ICardProvider>(AppConifg.Current.ParkingConnection);
            CardInfo               info     = null;
            QueryResult <CardInfo> find     = provider.GetByID(employeeNum);

            if (find.Result == ResultCode.Successful || find.Result == ResultCode.NoRecord)
            {
                if (find.QueryObject != null)
                {
                    info = find.QueryObject.Clone();
                }
            }
            else
            {
                return(CreateInterfaceReturnCode(find.Result));
            }
            if (info == null)
            {
                info = new CardInfo();

                //以下为卡片默认设置
                info.CardType       = Ralid.Park.BusinessModel.Enum.CardType.MonthRentCard;
                info.CanRepeatOut   = false;
                info.CanRepeatIn    = false;
                info.HolidayEnabled = true;
                info.WithCount      = true;
                info.OnlineHandleWhenOfflineMode = false;
                info.CanEnterWhenFull            = true;
                info.EnableWhenExpired           = true;
                info.ValidDate = new DateTime(2099, 12, 31);
            }
            info.CardID           = employeeNum;
            info.OwnerName        = employeeName;
            info.Telphone         = telPhone;
            info.CardCertificate  = department;
            info.CarPlate         = carPlate;
            info.Status           = (Ralid.Park.BusinessModel.Enum.CardStatus)cardStatus;
            info.ActivationDate   = activation;
            info.EnableLimitation = enableLimitation;
            info.LimitationRemain = (decimal)limitation;
            info.AccessID         = (byte)accessID;
            info.SheetID          = sheetID;

            CommandResult result = null;

            if (find.QueryObject == null)
            {
                result = provider.Insert(info);
            }
            else
            {
                result = provider.Update(info, find.QueryObject);
            }

            return(CreateInterfaceReturnCode(result.Result));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 在数据库中增加一张卡片
        /// </summary>
        public CommandResult AddCard(CardInfo info)
        {
            CommandResult result = _Provider.Insert(info);

            return(result);
        }
Ejemplo n.º 4
0
        //保存卡片信息,如果存在则直接覆盖
        public InterfaceReturnCode SaveCard(string cardID, short cardNum, byte carType, byte status, short index,
                                            int lastEntrance, string activationDate, DateTime validDate, decimal balance,
                                            decimal deposit, int discountHour, int options)
        {
            DateTime activation;

            if (!DateTime.TryParse(activationDate, out activation))
            {
                return(InterfaceReturnCode.ParameterError);
            }
            //卡片状态  = 1 Enabled 已发行, = 3 Disabled 禁用
            byte cardStatus = (byte)(status == 0 ? 3 : 1);

            ICardProvider          provider = ProviderFactory.Create <ICardProvider>(AppConifg.Current.ParkingConnection);
            CardInfo               info     = null;
            QueryResult <CardInfo> find     = provider.GetByID(cardID);

            if (find.Result == ResultCode.Successful || find.Result == ResultCode.NoRecord)
            {
                if (find.QueryObject != null)
                {
                    info = find.QueryObject.Clone();
                }
            }
            else
            {
                return(CreateInterfaceReturnCode(find.Result));
            }
            if (info == null)
            {
                info = new CardInfo();

                //以下为卡片默认设置
                info.CardType = Ralid.Park.BusinessModel.Enum.CardType.MonthRentCard;//卡片类型定位月卡

                info.CanRepeatOut   = false;
                info.CanRepeatIn    = false;
                info.HolidayEnabled = true;
                info.WithCount      = true;
                info.OnlineHandleWhenOfflineMode = false;
                info.CanEnterWhenFull            = true;
                info.EnableWhenExpired           = true;
                info.ValidDate = new DateTime(2099, 12, 31);
            }
            info.CardID        = cardID;
            info.CardNum       = cardNum;
            info.AccessID      = 0;//表示所有权限
            info.CarType       = carType;
            info.Index         = index;
            info.ParkingStatus = ParkingStatus.Out;
            info.LastDateTime  = DateTime.Now;
            info.LastEntrance  = lastEntrance;

            info.Status         = (Ralid.Park.BusinessModel.Enum.CardStatus)cardStatus;
            info.ActivationDate = activation;

            CommandResult result = null;

            if (find.QueryObject == null)
            {
                result = provider.Insert(info);
            }
            else
            {
                result = provider.Update(info, find.QueryObject);
            }
            return(CreateInterfaceReturnCode(result.Result));
        }