public async Task Create([Remainder] string name) { await Context.Channel.DeleteMessageAsync(Context.Message); var users = await Context.Channel.GetUsersAsync().FlattenAsync(); var addedUser = users.FirstOrDefault(_ => _.Username.ToLower().Contains(name.ToLower())); if (addedUser != null) { var room = RouteRoom(); var client = room.Clients.ToList().FirstOrDefault(_ => _.Name.ToLower().Contains(addedUser.Username.ToLower())); var builder = new EmbedBuilder(); builder.WithTitle($"{Context.Channel.Name}"); builder.WithDescription($"добавлен пользователь {addedUser.Username}"); if (client == null) { client = new FinanceClient(addedUser.Id, addedUser.Username); room.AddClient(client); await Context.User.SendMessageAsync("", false, builder.Build()); } else { builder.WithDescription($"{addedUser.Username} уже существует"); await Context.User.SendMessageAsync("", false, builder.Build()); } } }
public Client() { InitializeComponent(); Архив = new DataClient(); Конфигуратор = new ConfigurationClient(); Бухгалтерия = new FinanceClient(); Сервисы = new ServicesClient(); Файлы = new FileClient(); }
public Client(TimeSpan timeout) { InitializeComponent(); //для создания timeout создаем новые ссылки this.Архив = new DataClient(DefaultBinding, new EndpointAddress(string.Format(RosService.Client.DefaultEndpointAddress, "Data"))); this.Бухгалтерия = new FinanceClient(DefaultBinding, new EndpointAddress(string.Format(RosService.Client.DefaultEndpointAddress, "Finance"))); this.Конфигуратор = new ConfigurationClient(DefaultBinding, new EndpointAddress(string.Format(RosService.Client.DefaultEndpointAddress, "Configuration"))); this.Сервисы = new ServicesClient(DefaultBinding, new EndpointAddress(string.Format(RosService.Client.DefaultEndpointAddress, "Services"))); this.Файлы = new FileClient(DefaultStreamingBinding, new EndpointAddress(string.Format(RosService.Client.DefaultStreamingEndpointAddress, "File"))); CommunicationObjects = new ICommunicationObject[] { Архив, Конфигуратор, Бухгалтерия, Сервисы, Файлы }; SetTimeout(timeout); }
public Client() { InitializeComponent(); var current = null as ClientHost; do { if (currentService >= maxService) { currentService = 0; } current = _ClientHosts.ElementAtOrDefault(currentService); Interlocked.Increment(ref currentService); } while (current == null); lock (current.lockObj) { #region NamePipe, Tcp сбрасывать соединение switch (Mode) { case ClientMode.Server: case ClientMode.Tcp: case ClientMode.NamedPipe: { var _time = DateTime.Now; if (current.IdleTimeout <= _time) { current.Dispose(); current.IdleTimeout = _time.Add(InactivityTimeout); } } break; } #endregion if (!current.IsInitialize) { current.Dispose(); current.Initialize(); } this.Архив = current.Архив; this.Конфигуратор = current.Конфигуратор; this.Бухгалтерия = current.Бухгалтерия; this.Сервисы = current.Сервисы; this.Файлы = current.Файлы; } }
private FinanceClient FindClient() { var room = RouteRoom(); var client = room.Clients.FirstOrDefault(_ => _.Id == Context.User.Id); if (client == null) { client = new FinanceClient(Context.User.Id, Context.User.Username); room.AddClient(client); } else if (client.Name != Context.User.Username) { client.SetName(Context.User.Username); } return(client); }
public void Initialize() { if (IsFaulted(Архив)) { //var s = System.Diagnostics.Stopwatch.StartNew(); //if(DataF == null) // DataF = new EndpointAddress(string.Format(RosService.Client.DefaultEndpointAddress, "Data")); Архив = new DataClient(DefaultBinding, new EndpointAddress(string.Format(RosService.Client.DefaultEndpointAddress, "Data"))); Архив.InnerChannel.Faulted += new EventHandler(InnerChannel_Faulted); Архив.InnerChannel.Closing += new EventHandler(InnerChannel_Closing); //Архив.Open(); } if (IsFaulted(Конфигуратор)) { Конфигуратор = new ConfigurationClient(DefaultBinding, new EndpointAddress(string.Format(RosService.Client.DefaultEndpointAddress, "Configuration"))); Конфигуратор.InnerChannel.Faulted += new EventHandler(InnerChannel_Faulted); Конфигуратор.InnerChannel.Closing += new EventHandler(InnerChannel_Closing); // Find the ContractDescription of the operation to find. //ContractDescription cd = ((ConfigurationClient)Конфигуратор).Endpoint.op //OperationDescription myOperationDescription = cd.Operations.Find("Add"); //// Find the serializer behavior. //DataContractSerializerOperationBehavior serializerBehavior = // myOperationDescription.Behaviors. // Find<DataContractSerializerOperationBehavior>(); // If the serializer is not found, create one and add it. //if (serializerBehavior == null) //{ // serializerBehavior = new DataContractSerializerOperationBehavior(myOperationDescription); // myOperationDescription.Behaviors.Add(serializerBehavior); //} //var serializerBehavior = new DataContractSerializerOperationBehavior(new OperationDescription("f1", new ContractDescription("f1")); //serializerBehavior.MaxItemsInObjectGraph = int.MaxValue; //Конфигуратор.Endpoint.Behaviors.Add( //var f = Конфигуратор.Endpoint.Behaviors.Find<DataContractSerializerOperationBehavior>(); //serializerBehavior.IgnoreExtensionDataObject = true; } if (IsFaulted(Бухгалтерия)) { Бухгалтерия = new FinanceClient(DefaultBinding, new EndpointAddress(string.Format(RosService.Client.DefaultEndpointAddress, "Finance"))); Бухгалтерия.InnerChannel.Faulted += new EventHandler(InnerChannel_Faulted); Бухгалтерия.InnerChannel.Closing += new EventHandler(InnerChannel_Closing); } if (IsFaulted(Сервисы)) { Сервисы = new ServicesClient(DefaultBinding, new EndpointAddress(string.Format(RosService.Client.DefaultEndpointAddress, "Services"))); Сервисы.InnerChannel.Faulted += new EventHandler(InnerChannel_Faulted); Сервисы.InnerChannel.Closing += new EventHandler(InnerChannel_Closing); } if (IsFaulted(Файлы)) { Файлы = new FileClient(DefaultStreamingBinding, new EndpointAddress(string.Format(RosService.Client.DefaultStreamingEndpointAddress, "File"))); Файлы.InnerChannel.Faulted += new EventHandler(InnerChannel_Faulted); Файлы.InnerChannel.Closing += new EventHandler(InnerChannel_Closing); } Items = new ICommunicationObject[] { Архив, Конфигуратор, Бухгалтерия, Сервисы, Файлы }; IsInitialize = true; }
public DataSet BuildDataSet(string НазваниеОтчета, IEnumerable <Query> Запросы, RosService.Data.Хранилище Хранилище, string user, string domain) { var ds = new DataSet(); //добавить параметры запроса var param = Запросы.Where(p => p != null).SelectMany(p => p.Параметры).Distinct(new ПараметрComparer()); var table = new System.Data.DataTable("Параметры"); table.Columns.Add("Имя", typeof(string)); table.Columns.Add("Значение", typeof(object)); if (param.FirstOrDefault(p => p.Имя.Equals("@Пользователь")) == null) { table.Rows.Add(new object[] { "@Пользователь", user }); } if (param.FirstOrDefault(p => p.Имя.Equals("@Дата")) == null) { table.Rows.Add(new object[] { "@Дата", DateTime.Now }); } if (param.FirstOrDefault(p => p.Имя.Equals("@НазваниеОтчета")) == null) { table.Rows.Add(new object[] { "@НазваниеОтчета", НазваниеОтчета }); } if (Запросы != null) { foreach (var item in param) { table.Rows.Add(new object[] { item.Имя, item.Значение }); } } ds.Merge(table); //загрузить константы try { var query = new Query(); //query.CacheDuration = TimeSpan.FromMinutes(5); //query.CacheLocation = Query.OutputCacheLocation.Memory; //query.CacheName = "ПечатьОтчетов/Константы"; query.Типы.Add("Константа"); query.ДобавитьВыводимыеКолонки(new string[] { "НазваниеОбъекта", "ЗначениеКонстанты" }); query.МестаПоиска.Add(new Query.МестоПоиска() { id_node = "Константы", МаксимальнаяГлубина = 1 }); table = data.Поиск(query, Хранилище.Оперативное, domain).Значение; table.TableName = "Константа"; ds.Merge(table); } catch (Exception ex) { new ConfigurationClient().ЖурналСобытийДобавитьОшибку("СформироватьОтчет.BuildDataSet: Константа", ex.ToString(), user, domain); } if (Запросы != null) { var lockObject = new System.Object(); var oRow = 0; foreach (var _query in Запросы.Where(p => p != null)) { var table1 = null as System.Data.DataTable; if (_query.СтрокаЗапрос != null && _query.СтрокаЗапрос.StartsWith("[ПоискИстории;")) { table1 = data.ПоискИстории(_query, Хранилище, domain).Значение; } else { table1 = data.Поиск(_query, Хранилище, domain).Значение; } table1.TableName = string.Format("Значение{0}", oRow + 1); var colums = new List <string>(); foreach (DataColumn _item in table1.Columns) { if (!(_item.DataType == typeof(double) || _item.DataType == typeof(decimal))) { continue; } if (_item.ColumnName == "id_node" || _item.ColumnName == "type") { continue; } colums.Add(_item.ColumnName); } foreach (var _item in colums) { var column = table1.Columns.Add(_item + "Прописью", typeof(string)); var column2 = table1.Columns.Add(_item + "ПрописьюПолностью", typeof(string)); foreach (var row in table1.AsEnumerable()) { var p = Convert.IsDBNull(row[_item]) ? 0 : Convert.ToDouble(row[_item]); row[column] = new FinanceClient().ЧислоПрописью(p, ФорматЧислаПрописью.ублиБезКопеек).Trim(); row[column2] = new FinanceClient().ЧислоПрописью(p, ФорматЧислаПрописью.убли).Trim(); } } lock (lockObject) { ds.Merge(table1); } oRow++; }//); } return(ds); }