Beispiel #1
0
        public void SendCode(string phone, string text, SendMethod sendMethod)
        {
            GlobalLogManager.WriteString("Info: WCFPlugin SendCode: phone {0}, text {1}, method {2}",
                                         phone, text, sendMethod);

            if (string.IsNullOrWhiteSpace(phone))
            {
                return;
            }

            switch (sendMethod)
            {
            case SendMethod.SMS:
                CallManagementInterface.SendSMS(phone, text, 0);
                break;

            case SendMethod.Call:
                CallManagementInterface.StartAutoinformator(phone, text, 0);
                break;

            case SendMethod.Both:
                CallManagementInterface.SendSMS(phone, text, 0);
                CallManagementInterface.StartAutoinformator(phone, text, 0);
                break;
            }
        }
Beispiel #2
0
        private void DoPayments(double amount, IClient client, string logDescription, string messageTemplate)
        {
            CheckAndCreateBilling(client);
            client.Billing.Balance += amount;
            PaymentRoutine.AddBillingLogsInThreadPool(
                amount,
                BillingTypes.Manually,
                client.Billing.ID,
                null /*orderId*/,
                string.Empty,
                logDescription,
                client.Billing.Balance ?? 0,
                BillingLogType.Client,
                null /*orerNumber*/);

            string number  = _clientManager.GetDefaultPhone(client.ID);
            string message = string.Format(messageTemplate, amount);

            if (!string.IsNullOrWhiteSpace(number))
            {
                if (PluginParams.NeedMakeCall)
                {
                    CallManagementInterface.StartAutoinformator(number, message, 0);
                }

                if (PluginParams.NeedSendSms)
                {
                    CallManagementInterface.SendSMS(number, message, 0);
                }
            }
            else
            {
                GlobalLogManager.WriteString("Warning: WCFPlugin. У клиента не указан номер телефона");
            }
        }
Beispiel #3
0
        public override void OnInitialize()
        {
            base.OnInitialize();
            try
            {
                _orderRoutine = OrderRoutine.OrderRoutine.GetOrderRoutine();
                _orders       = _orderRoutine.GetOrders();

                _billings = GlobalDataObjects.GetGlobalDataObject("Cx.Client.Taxi.Billings.Data.Billings") as IBillings;
                if (_billings == null)
                {
                    GlobalLogManager.WriteString("Error: Ошибка в плагине ClientsBountyManager. Не удалось загрузить данные по счетам");
                }

                _orders.StatePropertyChanged     += _orders_StatePropertyChanged;
                _billings.BalancePropertyChanged += _billings_BalancePropertyChanged;
            }
            catch (Exception e)
            {
                GlobalLogManager.WriteString("Error: Ошибка в плагине ClientsBountyManager. {0}", e);
            }

            LoadParams();

            _watcher = new FileSystemWatcher(GlobalUtils.AppDirectory, "ClientsBountyParams.xml");
            _watcher.NotifyFilter        = NotifyFilters.LastWrite;
            _watcher.Changed            += watcher_Changed;
            _watcher.EnableRaisingEvents = true;
        }
Beispiel #4
0
 private void LoadParams()
 {
     try
     {
         string fileName = GlobalUtils.AppDirectory + "\\ClientsBountyParams.xml";
         GlobalLogManager.WriteString("Info: Загрузка параметров плагина ClientsBountyManager. fileName = {0}", fileName);
         using (Stream stream = new FileStream(fileName, FileMode.Open))
         {
             XmlSerializer serializer = new XmlSerializer(typeof(PluginParams));
             var           temp       = (PluginParams)serializer.Deserialize(stream);
             lock (_paramLock)
             {
                 _param = new PluginParams(temp);
             }
         }
     }
     catch (Exception e)
     {
         GlobalLogManager.WriteString("Warning: Не удалось загрузить параметры плагина ClientsBountyManager. {0}", e);
         lock (_paramLock)
         {
             _param = new PluginParams();
         }
     }
 }
Beispiel #5
0
 private void LoadParams()
 {
     GlobalLogManager.WriteString("WCFManager. Загрузка параметров");
     lock (_paramLock)
     {
         _param = PluginParams.LoadParams(GlobalUtils.AppDirectory);
     }
     GlobalLogManager.WriteString("WCFManager. Загрузка параметров выполнена");
 }
Beispiel #6
0
        private void DoBalanceNotify(IBilling billing)
        {
            if (billing == null)
            {
                return;
            }

            Stopwatch timeWatcher = new Stopwatch();
            var       clients     = ClientManager.ClientManager.GetManager().GetClients();
            IClient   client      = null;

            timeWatcher.Start();
            foreach (var item in clients)
            {
                if (item.IDBilling == billing.ID)
                {
                    client = item;
                    break;
                }
            }
            timeWatcher.Stop();
            if (timeWatcher.ElapsedMilliseconds > 500)
            {
                GlobalLogManager.WriteString("Warning: ClientsBountyManager. Поиск клиента по IDBilling более 500 мс.");
            }

            if (client == null)
            {
                GlobalLogManager.WriteString("Error: ClientsBountyManager. Не найден клиент со счетом ID = {0}, Account = {1}", billing.ID, billing.Account);
                return;
            }

            string number = ClientManager.ClientManager.GetManager().GetDefaultPhone(client.ID);

            if (!string.IsNullOrWhiteSpace(number))
            {
                if (_param.NeedMakeBalanceNotifyCall)
                {
                    CallManagementInterface.StartAutoinformator(number, _param.BalanceNotifyMessage, 0);
                }

                if (_param.NeedSendBalanceNotifySMS)
                {
                    CallManagementInterface.SendSMS(number, _param.BalanceNotifyMessage, 0);
                }
            }
            else
            {
                GlobalLogManager.WriteString("Warning: ClientsBountyManager. У клиента не указан номер телефона");
            }
        }
Beispiel #7
0
        public override void OnInitialize()
        {
            LoadParams();

            _billings = GlobalDataObjects.GetGlobalDataObject("Cx.Client.Taxi.Billings.Data.Billings") as IBillings;
            if (_billings == null)
            {
                GlobalLogManager.WriteString(
                    "Error: Ошибка в плагине WCFManager. Не удалось загрузить данные по счетам");
            }

            _users = GlobalDataObjects.GetGlobalDataObject("Cx.Client.Security.Users.Data.Users") as IUsers;
            if (_users == null)
            {
                GlobalLogManager.WriteString(
                    "Error: Ошибка в плагине WCFManager. Не удалось загрузить данные по пользователям");
            }

            var httpHostStr = string.Format("{0}:{1}/ClientBonusService", _param.HostName, _param.Port);
            var tcpHostStr  = string.Format("{0}:{1}/ClientBonusService", _param.HostName, _param.Port + 1);

            GlobalLogManager.WriteString("WCFManager. Создание сервиса");
            var serviceHost = new ServiceHost(typeof(ClientBonusService));

            GlobalLogManager.WriteString("WCFManager. Установка параметров");
            ClientBonusService.DataProvider = new CxDataProvider(_param, _billings, _users);
            ClientBonusService.LogonManager = new LogonManager(GlobalUtils.AppDirectory);
            ClientBonusService.Params       = _param;
            var portsharingBinding = new NetTcpBinding();
            var httpBinding        = new BasicHttpBinding();

            serviceHost.AddServiceEndpoint(typeof(IClientBonusService), portsharingBinding, "net.tcp://" + tcpHostStr);
            serviceHost.AddServiceEndpoint(typeof(IClientBonusService), httpBinding, "http://" + httpHostStr);
            GlobalLogManager.WriteString("WCFManager. Запуск сервиса");
            serviceHost.Open();

            _watcher                     = new FileSystemWatcher(GlobalUtils.AppDirectory, PluginParams.FileName);
            _watcher.Changed            += _watcher_Changed;
            _watcher.NotifyFilter        = NotifyFilters.LastWrite;
            _watcher.EnableRaisingEvents = true;
            GlobalLogManager.WriteString("WCFManager. Сервис запущен");
        }
Beispiel #8
0
        void _orders_StatePropertyChanged(object sender, CxPropertyChangedEventArgs <IOrder> e)
        {
            PluginParams param;

            lock (_paramLock)
            {
                param = new PluginParams(_param);
            }

            var order = e.Object;

            if (order.State == Enums.OrderStates.Paid &&            //Заказ оплачен
                param.IdsServices.Contains(order.IDService ?? 0) && //с указанной услугой
                order.Cost.HasValue && order.Cost.Value > 0.0 &&    //и не нулевой стоимостью
                order.Client != null)
            {
                var client = order.Client;
                if (client.IDBilling == null) //Если у клиента еще нет счета, то создаем его
                {
                    client.Billing = _billings.AddNew(item =>
                    {
                        item.ID        = DbUtils.GenID();
                        item.Account   = item.ID.ToString();
                        item.Balance   = 0;
                        item.Limit     = 0;
                        item.OwnerType = BillingLogType.Client;
                    });
                }

                var    bountySumm = order.Cost.Value * param.Procent;
                double oldBalance = client.Billing.Balance ?? 0;
                client.Billing.Balance = oldBalance + bountySumm;         //Пополняем счет клиента
                PaymentRoutine.PaymentRoutine.AddBillingLogsInThreadPool( //И записываем в лог
                    bountySumm,
                    BillingTypes.Order,
                    client.Billing.ID,
                    order.ID,
                    string.Empty,
                    param.BountyDescription,
                    client.Billing.Balance ?? 0,
                    BillingLogType.Client,
                    order.Number);

                string number  = ClientManager.ClientManager.GetManager().GetDefaultPhone(client.ID);
                string message = string.Format(param.MessageTemplate, bountySumm);

                if (!string.IsNullOrWhiteSpace(number))
                {
                    if (param.NeedMakeCall)
                    {
                        CallManagementInterface.StartAutoinformator(number, message, order.ID);
                    }

                    if (param.NeedSendSMS)
                    {
                        CallManagementInterface.SendSMS(number, message, order.ID);
                    }
                }
                else
                {
                    GlobalLogManager.WriteString("Warning: ClientsBountyManager. У клиента не указан номер телефона");
                }
            }
        }