コード例 #1
0
        public DataTable GetMetas(DateTime fecha, string agrup, int val)
        {
            MysqlDBContext _connect = new MysqlDBContext();
            DataTable      dt       = new DataTable();

            if (_connect.Open())
            {
                MySqlCommand comando = new MySqlCommand();
                comando.CommandText = "sp_EFICIENCIA_AGRUP";
                comando.CommandType = CommandType.StoredProcedure;
                comando.Connection  = _connect.Connection;

                comando.Parameters.Add("fecha", MySqlDbType.DateTime, 19).Value = fecha;
                comando.Parameters.Add("agrup", MySqlDbType.VarChar, 3).Value   = agrup;
                comando.Parameters.Add("val", MySqlDbType.Int32, 10).Value      = val;

                MySqlDataAdapter da = new MySqlDataAdapter();
                da.SelectCommand = comando;

                da.Fill(dt);
            }


            return(dt);
        }
コード例 #2
0
 public WSocketController(ILogger <WSocketController> logger, IWebSocket webSocket, MysqlDBContext mysqlcontext)
 {
     _logger       = logger;
     _socket       = webSocket;
     _mysqlcontext = mysqlcontext;
     //_socket = new
 }
コード例 #3
0
 public UserRepository(MysqlDBContext context, ContestRepository repo, CountryRepository crepo, InstitutionRepository instrepo)
 {
     this._context         = context;
     this._contestRepo     = repo;
     this._countryRepo     = crepo;
     this._institutionRepo = instrepo;
 }
コード例 #4
0
 public EventController(IModelService modelS, MysqlDBContext context)
 {
     this._context = context;
     this._modelS  = modelS;
 }
コード例 #5
0
 public ContinentRepository(MysqlDBContext context)
 {
     this._context = context;
 }
コード例 #6
0
 public ContestController(MysqlDBContext c, ContestRepository repo, IModelService modelServices)
 {
     this._repo          = repo;
     this._modelServices = modelServices;
 }
コード例 #7
0
 public ContestRepository(CountryRepository countryRepo, MysqlDBContext context)
 {
     this._context     = context;
     this._countryRepo = countryRepo;
 }
コード例 #8
0
        /// <summary>
        /// 接收客户端数据.websocket 从ClientList类里拿。
        /// </summary>
        /// <param name="webSocket">webSocket 对象</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <string> ReceiveDataAsyncDataTableNew(WebSocket webSocket, CancellationToken cancellationToken, MysqlDBContext mysqlcontext)
        {
            WebSocketReceiveResult result;
            MessageModel           msg = null;

            if (webSocket.State != WebSocketState.Open)
            {
                return("");
            }

            while (!webSocket.CloseStatus.HasValue)
            {
                ArraySegment <byte> buffer = new ArraySegment <byte>(new byte[1024 * 2]);
                result = await webSocket.ReceiveAsync(buffer, cancellationToken);

                if (result.MessageType == WebSocketMessageType.Close)
                {
                    break;
                }
                ArraySegment <byte> segment = null;
                if (result.Count > 0)
                {
                    try
                    {
                        msg = JsonConvert.DeserializeObject <MessageModel>(Encoding.Default.GetString(buffer));

                        if (msg == null)
                        {
                            break;
                        }
                        //这个只是发送了部分数据出去。
                        byte[] newbuf = Encoding.UTF8.GetBytes(msg.Data.ToString());//过度下,按实际大小返回给客户端。
                        segment = new ArraySegment <byte>(newbuf);

                        ClientList.AddDicUser(msg.RoomId + msg.SenderId, webSocket);

                        MessageModel message = new MessageModel();
                        //message.Id = 2;//id
                        message.RoomId   = msg.RoomId;
                        message.SenderId = msg.SenderId;
                        message.TargetId = msg.TargetId;
                        message.Data     = msg.Data;


                        mysqlcontext.Add(message);
                        mysqlcontext.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        _logger.LogError(ex.Message);
                    }

                    List <Task> tasks = new List <Task>();
                    switch (msg.SendType)
                    {
                    //Broadcast all user.
                    case Model.SendType.Broadcast:

                        if (ClientList.userdic.ContainsKey(msg.RoomId))
                        {
                            ClientList.userdic[msg.RoomId].ForEach(ws =>
                            {
                                tasks.Add(ws.SendAsync(segment, result.MessageType, result.EndOfMessage, CancellationToken.None));
                            });
                            Task.WaitAll(tasks.ToArray());
                        }
                        else if (ClientList.userdic.ContainsKey(msg.RoomId + msg.SenderId))
                        {     //added by longdb 2020.6.17 Get offline information。
                            List <MessageModel> mmodel2 = mysqlcontext.Set <MessageModel>().Where(p => p.SenderId == msg.SenderId).ToList();
                            ClientList.userdic[msg.RoomId + msg.SenderId].ForEach(ws =>
                            {
                                tasks.Add(ws.SendAsync(segment, result.MessageType, result.EndOfMessage, CancellationToken.None));
                            });
                            Task.WaitAll(tasks.ToArray());
                        }
                        break;

                    //one to one.
                    case Model.SendType.Unicast:
                        if (ClientList.userdic.ContainsKey(msg.RoomId) &&
                            ClientList.userdic[msg.RoomId].Count > 0)
                        {
                            WebSocket siglews = ClientList.userdic[msg.RoomId].Where(ws => ws == webSocket).FirstOrDefault();
                            tasks.Add(siglews.SendAsync(segment, result.MessageType, result.EndOfMessage, CancellationToken.None));
                            Task.WaitAll(tasks.ToArray());
                        }
                        break;
                    }
                }
            }

            if (msg != null && ClientList.userdic.ContainsKey(msg.RoomId))
            {
                WebSocket socketmodel = ClientList.userdic[msg.RoomId].Where(ws => ws == webSocket).FirstOrDefault();
                //移除聊天室中的某个成员
                ClientList.RemoveDicUser(msg.RoomId, socketmodel);
                //关闭当前异常连接。
                await socketmodel.CloseAsync(webSocket.CloseStatus.Value, webSocket.CloseStatusDescription, CancellationToken.None);
            }
            return("");
        }
コード例 #9
0
 public CountryRepository(MysqlDBContext context, ContinentRepository repo)
 {
     this._context      = context;
     this._contientRepo = repo;
 }
コード例 #10
0
 public InstitutionRepository(MysqlDBContext context, CountryRepository repo)
 {
     this._context     = context;
     this._countryRepo = repo;
 }