Пример #1
0
        public async Task Insert(UsuarioDTO usuario)
        {
            if (string.IsNullOrWhiteSpace(usuario.Nome))
            {
                AddError("Descricao", "Descricao deve ser informada.");
            }
            else
            {
                usuario.Nome = usuario.Nome.Trim();
                if (usuario.Nome.Length < 5 || usuario.Nome.Length > 60)
                {
                    AddError("Descricao", "A descricao deve conter entre 5 a 60 caracteres.");
                }
            }

            CheckErros();

            try
            {
                using (SSContext context = new SSContext())
                {
                    context.Usuarios.Add(usuario);
                    await context.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                File.WriteAllText("log.txt", ex.Message + " - " + ex.StackTrace);
                throw new Exception("Erro no banco de dados, contate o administrador.");
            }
        }
Пример #2
0
        private void SocketData(int source, int session, string method, byte[] param)
        {
            NetSprotoType.SocketData socketData = new NetSprotoType.SocketData(param);
            long connectionId = socketData.connection;
            byte[] tempParam = Convert.FromBase64String(socketData.buffer);

            SkynetClusterRequest req = m_skynetPacketManager.UnpackSkynetRequest(tempParam);
            if (req == null)
            {
                return;
            }

            NetProtocol instance = NetProtocol.GetInstance();
            int tag = instance.GetTag("RPC");
            RPCParam sprotoRequest = (RPCParam)instance.Protocol.GenRequest(tag, req.Data);
            byte[] targetParam = Convert.FromBase64String(sprotoRequest.param);

            if (req.Session > 0)
            {
                SSContext context = new SSContext();
                context.IntegerDict["RemoteSession"] = req.Session;
                context.LongDict["ConnectionId"] = connectionId;

                Call(req.ServiceName, sprotoRequest.method, targetParam, context, TransferCallback);
            }
            else
            {
                Send(req.ServiceName, sprotoRequest.method, targetParam);
            }
        }
Пример #3
0
        public async Task Insert(ProdutoDTO produto)
        {
            if (string.IsNullOrWhiteSpace(produto.Descricao))
            {
                base.AddError("Descricao", "Descrição deve ser informada.");
            }
            else
            {
                produto.Descricao = produto.Descricao.Trim();
                if (produto.Descricao.Length < 5 || produto.Descricao.Length > 150)
                {
                    base.AddError("Descricao", "Descrição deve ter entre 5 e 150 caracteres.");
                }
            }

            if (produto.Preco <= 0)
            {
                base.AddError("Preco", "O preço não pode ser menor ou igual a zero.");
            }
            base.CheckErrors();
            try
            {
                using (SSContext context = new SSContext())
                {
                    context.Produtos.Add(produto);
                    await context.SaveChangesAsync();
                }//context.Dispose();
            }
            catch (Exception ex)
            {
                throw new Exception("Erro no banco de dados.");
            }
        }
Пример #4
0
 //add product
 public List <Product> GetProducts()
 {
     using (var context = new SSContext())
     {
         return(context.Products.ToList());
     }
 }
Пример #5
0
        public async Task Insert(CategoriaDTO categoria)
        {
            #region VALIDAÇÃO NOME
            if (string.IsNullOrWhiteSpace(categoria.Nome))
            {
                base.AddError("A categoria deve ser informada.", "Categoria");
            }
            else
            {
                categoria.Nome = categoria.Nome.Trim();
                if (categoria.Nome.Length < 5 || categoria.Nome.Length > 40)
                {
                    base.AddError("O nome da categoria deve conter entre 5 e 40 caracteres.", "Categoria");
                }
            }
            #endregion

            base.CheckErrors();

            #region VALIDAÇÃO ERROS
            try
            {
                using (SSContext context = new SSContext())
                {
                    context.Categoria.Add(categoria);
                    await context.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                File.WriteAllText("log.txt", ex.Message + " - " + ex.StackTrace);
                throw new Exception("Erro no banco de dados, contate do administrador.");
            }
            #endregion
        }
Пример #6
0
 public async Task <List <CategoriaDTO> > GetCategorias()
 {
     using (SSContext context = new SSContext())
     {
         return(await context.Categorias.ToListAsync());
     }
 }
Пример #7
0
        public async Task Insert(UsuarioDTO usuario)
        {
            List <Error> errors = new List <Error>();

            if (string.IsNullOrWhiteSpace(usuario.Nome))
            {
                base.AddError("Nome", "Nome deve ser informado");
            }
            else if (usuario.Nome.Length < 5 || usuario.Nome.Length > 50)
            {
                base.AddError("Nome", "O nome deve conter entre 5 e 50 caracteres");
            }

            //APÓS VALIDAR TODOS OS CAMPOS, VERIFIQUE SE POSSUIMOS ERROS
            base.CheckErrors();
            try
            {
                using (SSContext context = new SSContext())
                {
                    context.Usuarios.Add(usuario);
                    await context.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                File.WriteAllText("log.txt", ex.Message + " - " + ex.StackTrace);
                throw new Exception("Erro no banco de dados, contate o admnistrador.");
            }
        }
Пример #8
0
        private void RemoteResponseCallback(SSContext context, string method, byte[] param, RPCError error)
        {
            long   connectionId  = context.LongDict["ConnectionId"];
            int    remoteSession = context.IntegerDict["RemoteSession"];
            int    sourceSession = context.IntegerDict["SourceSession"];
            int    source        = context.IntegerDict["Source"];
            string sourceMethod  = context.StringDict["Method"];

            if (error == RPCError.OK)
            {
                DoResponse(source, sourceMethod, param, sourceSession);
            }
            else
            {
                DoError(source, sourceSession, error, "RemoteCall Error");
            }

            Dictionary <int, WaitForResponseRequest> waitForResponseDict = null;
            bool isExist = m_conn2sessions.TryGetValue(connectionId, out waitForResponseDict);

            if (isExist)
            {
                waitForResponseDict.Remove(remoteSession);
            }
        }
Пример #9
0
 //edit categoroy
 public Product GetProduct(int ID)
 {
     using (var context = new SSContext())
     {
         return(context.Products.Find(ID));
     }
 }
Пример #10
0
 //edit categoroy
 public Category GetCategory(int ID)
 {
     using (var context = new SSContext())
     {
         return(context.Categories.Find(ID));
     }
 }
Пример #11
0
 //add category
 public List <Category> GetCategories()
 {
     using (var context = new SSContext())
     {
         return(context.Categories.ToList());
     }
 }
Пример #12
0
 public async Task <List <CategoriaDTO> > GetCategorias(int page, int size)
 {
     using (SSContext context = new SSContext())
     {
         return(await context.Categorias.Skip(page *size).Take(size).ToListAsync());
     }
 }
Пример #13
0
        public async Task Insert(ClienteDTO cliente)
        {
            if (string.IsNullOrWhiteSpace(cliente.Nome))
            {
                AddError("Nome", "Nome deve ser informado.");
            }
            else if (cliente.Nome.Length < 5 || cliente.Nome.Length > 50)
            {
                AddError("Nome", "O nome deve conter entre 5 a 50 caracteres.");
            }

            //Após validar todos os campos, verifique se possuimos erros.
            CheckErros();

            try
            {
                using (SSContext context = new SSContext())
                {
                    context.Clientes.Add(cliente);
                    await context.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                File.WriteAllText("log.txt", ex.Message + " - " + ex.StackTrace);
                throw new Exception("Erro no banco de dados, contate o administrador.");
            }
        }
Пример #14
0
 //create
 public void SaveCategory(Category category)
 {
     using (var context = new SSContext())
     {
         context.Categories.Add(category);
         context.SaveChanges();
     }
 }
Пример #15
0
 //create
 public void SaveProduct(Product product)
 {
     using (var context = new SSContext())
     {
         context.Products.Add(product);
         context.SaveChanges();
     }
 }
Пример #16
0
 //update
 public void UpdateProduct(Product product)
 {
     using (var context = new SSContext())
     {
         context.Entry(product).State = System.Data.Entity.EntityState.Modified;
         context.SaveChanges();
     }
 }
Пример #17
0
 //update
 public void UpdateCategory(Category category)
 {
     using (var context = new SSContext())
     {
         context.Entry(category).State = System.Data.Entity.EntityState.Modified;
         context.SaveChanges();
     }
 }
Пример #18
0
        public void TimeoutCallback(SSContext context, long currentTime)
        {
            SkynetMessageSender_OnProcessRequest request = new SkynetMessageSender_OnProcessRequest();

            request.request_count = 123456;
            request.request_text  = "hello skynet";
            RemoteCall("testserver", ".test_send_skynet", "send_skynet", request.encode(), null, OnProcessResponse);

            this.TestSendMsg();
        }
Пример #19
0
        //delete


        public void DeleteCategory(Category category)
        {
            using (var context = new SSContext())
            {
                //var category = context.Categories.Find(ID);
                context.Entry(category).State = System.Data.Entity.EntityState.Deleted;
                //OR
                //context.Categories.Remove(category);
                context.SaveChanges();
            }
        }
Пример #20
0
 //delete
 public void DeleteProduct(Product product)
 {
     using (var context = new SSContext())
     {
         //product = context.Products.Find(ID);
         context.Entry(product).State = System.Data.Entity.EntityState.Deleted;
         //OR
         context.Products.Remove(product);
         context.SaveChanges();
     }
 }
Пример #21
0
 private void SendRequestCallback(SSContext context, string method, byte[] param, RPCError error)
 {
     if (error == RPCError.OK)
     {
         BattleTaskConsumer_OnBattleRequestResponse response = new BattleTaskConsumer_OnBattleRequestResponse(param);
         LoggerHelper.Info(m_serviceAddress, string.Format("TestSender <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Response"));
     }
     else
     {
         LoggerHelper.Info(m_serviceAddress, Encoding.ASCII.GetString(param));
     }
 }
Пример #22
0
        private void RemoteRequest(int source, string method, NetSprotoType.ClusterClientRequest request, long connectionId, int session)
        {
            int      tag      = NetProtocol.GetInstance().GetTag("RPC");
            RPCParam rpcParam = new RPCParam();

            rpcParam.method = request.method;
            rpcParam.param  = request.param;

            if (m_totalRemoteSession >= Int32.MaxValue)
            {
                m_totalRemoteSession = 0;
            }
            int           remoteSession = ++m_totalRemoteSession;
            List <byte[]> buffers       = m_skynetPacketManager.PackSkynetRequest(request.remoteService, remoteSession, tag, rpcParam.encode());

            SSContext rpcContext = new SSContext();

            rpcContext.LongDict["ConnectionId"]     = connectionId;
            rpcContext.IntegerDict["RemoteSession"] = remoteSession;
            rpcContext.IntegerDict["SourceSession"] = session;
            rpcContext.IntegerDict["Source"]        = source;
            rpcContext.StringDict["Method"]         = method;

            RPCResponseContext rpcResponseCallback = new RPCResponseContext();

            rpcResponseCallback.Callback = RemoteResponseCallback;
            rpcResponseCallback.Context  = rpcContext;
            m_remoteResponseCallbacks.Add(remoteSession, rpcResponseCallback);

            Dictionary <int, WaitForResponseRequest> waitResponseDict = null;
            bool isExist = m_conn2sessions.TryGetValue(connectionId, out waitResponseDict);

            if (!isExist)
            {
                waitResponseDict = new Dictionary <int, WaitForResponseRequest>();
                m_conn2sessions.Add(connectionId, waitResponseDict);
            }

            WaitForResponseRequest waitForResponseRequest = new WaitForResponseRequest();

            waitForResponseRequest.Session = session;
            waitForResponseRequest.Source  = source;
            waitResponseDict.Add(remoteSession, waitForResponseRequest);

            NetworkPacket networkPacket = new NetworkPacket();

            networkPacket.ConnectionId = connectionId;
            networkPacket.TcpObjectId  = m_tcpObjectId;
            networkPacket.Buffers      = buffers;
            networkPacket.Type         = SocketMessageType.DATA;

            NetworkPacketQueue.GetInstance().Push(networkPacket);
        }
Пример #23
0
        private void DoRequest(SSContext context, long currentTime)
        {
            TestServer_OnRequest request = new TestServer_OnRequest();

            request.request_time = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
            request.request_text = "hello my friend";

            LoggerHelper.Info(m_serviceAddress, string.Format(">>>>>>>>>>>>>>>>Request Call Time:{0} info:{1}", request.request_time, request.request_text));
            RemoteCall("testserver", "RPCTestServer", "OnRequest", request.encode(), null, DoRequestCallback);

            LoggerHelper.Info(m_serviceAddress, string.Format(">>>>>>>>>>>>>>>>Request Send Time:{0} info:{1}", request.request_time, request.request_text));
            RemoteSend("testserver", "RPCTestServer", "OnRequest", request.encode());
        }
Пример #24
0
 private void DoRequestCallback(SSContext context, string method, byte[] param, RPCError error)
 {
     if (error == RPCError.OK)
     {
         TestServer_OnRequestResponse response = new TestServer_OnRequestResponse(param);
         LoggerHelper.Info(m_serviceAddress, string.Format("<<<<<<<<<<<<<<<<Response OK Time:{0} info:{1}", response.response_time, response.response_text));
         Timeout(null, 10, DoRequest);
     }
     else
     {
         LoggerHelper.Info(m_serviceAddress, string.Format("<<<<<<<<<<<<<<<<Response Error code:{0} error text:{1}", (int)error, Encoding.ASCII.GetString(param)));
     }
 }
Пример #25
0
 public async Task <List <ProdutoDTO> > GetData()
 {
     try
     {
         using (SSContext context = new SSContext())
         {
             return(await context.Produtos.ToListAsync());
         }
     }
     catch (Exception ex)
     {
         File.WriteAllText("log.txt", ex.Message + " - " + ex.StackTrace);
         throw new Exception("Erro no banco de dados, contate o administrador.");
     }
 }
Пример #26
0
 public async Task <List <CategoriaDTO> > GetCategories(int page, int size)
 {
     try
     {
         using (SSContext context = new SSContext())
         {
             //List<ClienteDTO> clientes = context.Clientes.ToListAsync();
             //return clientes;
             return(await context.Categoria.ToListAsync());
         }
     }
     catch (Exception ex)
     {
         File.WriteAllText("log.txt", ex.Message + " - " + ex.StackTrace);
         throw new Exception("Erro no banco de dados, contate do administrador.");
     }
 }
Пример #27
0
        //VOID????? CADÊ O RESPONSE??????
        public async Task Insert(CategoriaDTO categoria)
        {
            if (string.IsNullOrWhiteSpace(categoria.Nome))
            {
                AddError("Nome", "O nome deve ser informado.");
            }
            else
            {
                categoria.Nome = categoria.Nome.Trim();
                if (categoria.Nome.Length < 2 || categoria.Nome.Length > 70)
                {
                    AddError("Nome", "Nome deve conter entre 2 e 70 caracteres.");
                }
            }
            try
            {
                using (SSContext context = new SSContext())
                {
                    //Irá no banco procurar se a categoria com este nome
                    //já foi cadastrado
                    CategoriaDTO categoriaJaCadastrada = await
                                                         context.Categorias.FirstOrDefaultAsync(c => c.Nome == categoria.Nome);

                    if (categoriaJaCadastrada != null)
                    {
                        //Se entrou aqui, categoria já cadastrada, lançar um erro!
                        //OU, NO MELHOR DOS CASOS, CRIAR UM RESPONSE.
                        throw new NecoException("Categoria já cadastrada!");
                    }
                    context.Categorias.Add(categoria);
                    await context.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                if (ex is NecoException)
                {
                    throw ex;
                }
                //TODO:
                //Logar Erro em algum lugar

                throw new Exception("Erro no banco de dados, contate o administrador.");
            }
        }
Пример #28
0
        public async Task Insert(CategoriaDTO categoria)
        {
            if (string.IsNullOrWhiteSpace(categoria.Nome))
            {
                AddError("Nome", "Nome deve ser informado.");
            }
            else if (categoria.Nome.Length < 5 || categoria.Nome.Length > 50)
            {
                AddError("Nome", "O nome deve conter entre 5 a 50 caracteres.");
            }

            //Após validar todos os campos, verifique se possuimos erros.
            CheckErros();

            try
            {
                using (SSContext context = new SSContext())
                {
                    //Irá no banco procurar se a categoria com este nome já foi cadastrada.
                    CategoriaDTO categoriaJaCadastrada = await context.Categorias.FirstOrDefaultAsync(c => c.Nome.Equals(categoria.Nome));

                    if (categoriaJaCadastrada != null)
                    {
                        //Se entrou aqui, categoria já cadastrada.
                        //Ou no melhor dos casos, criar um response.
                        throw new NecoException("Categoria já cadastrada!");
                    }
                    context.Categorias.Add(categoria);
                    await context.SaveChangesAsync();
                }
            }
            catch (Exception ex)
            {
                if (ex is NecoException)
                {
                    throw ex;
                }

                //TODO: Logar o erro em algum lugar.

                File.WriteAllText("log.txt", ex.Message + " - " + ex.StackTrace);
                throw new Exception("Erro no banco de dados, contate o administrador.");
            }
        }
Пример #29
0
        private void OnBattleRequestCallback(SSContext context, string method, byte[] param, RPCError error)
        {
            int source  = context.IntegerDict["source"];
            int session = context.IntegerDict["session"];

            if (error == RPCError.OK)
            {
                BattleTaskConsumer_OnBattleRequestResponse   consumerResponse   = new BattleTaskConsumer_OnBattleRequestResponse(param);
                BattleTaskDispatcher_OnBattleRequestResponse dispatcherResponse = new BattleTaskDispatcher_OnBattleRequestResponse();
                dispatcherResponse.method = "OnBattleRequest";
                dispatcherResponse.param  = consumerResponse.param;

                DoResponse(source, dispatcherResponse.method, dispatcherResponse.encode(), session);
            }
            else
            {
                DoError(source, session, error, Encoding.ASCII.GetString(param));
            }
        }
Пример #30
0
        private void TransferCallback(SSContext context, string method, byte[] param, RPCError error)
        {
            if (error == RPCError.OK)
            {
                int tag = NetProtocol.GetInstance().GetTag("RPC");
                RPCParam rpcParam = new RPCParam();
                rpcParam.method = method;
                rpcParam.param = Convert.ToBase64String(param);

                int remoteSession = context.IntegerDict["RemoteSession"];
                long connectionId = context.LongDict["ConnectionId"];

                List<byte[]> bufferList = m_skynetPacketManager.PackSkynetResponse(remoteSession, tag, rpcParam.encode());

                NetworkPacket rpcMessage = new NetworkPacket();
                rpcMessage.Type = SocketMessageType.DATA;
                rpcMessage.TcpObjectId = m_tcpObjectId;
                rpcMessage.Buffers = bufferList;
                rpcMessage.ConnectionId = connectionId;

                NetworkPacketQueue.GetInstance().Push(rpcMessage);
            }
            else
            {
                int remoteSession = context.IntegerDict["RemoteSession"];
                long connectionId = context.LongDict["ConnectionId"];

                List<byte[]> bufferList = m_skynetPacketManager.PackErrorResponse(remoteSession, Encoding.ASCII.GetString(param));

                NetworkPacket rpcMessage = new NetworkPacket();
                rpcMessage.Type = SocketMessageType.DATA;
                rpcMessage.TcpObjectId = m_tcpObjectId;
                rpcMessage.Buffers = bufferList;
                rpcMessage.ConnectionId = connectionId;

                NetworkPacketQueue.GetInstance().Push(rpcMessage);

                LoggerHelper.Info(m_serviceAddress, 
                    string.Format("Service:ClusterServer Method:TransferCallback errorCode:{0} errorText:{1}", (int)error, Encoding.ASCII.GetString(param)));
            }
        }