예제 #1
0
        public static void DeleteLinkSocialNet(byte[] data, IPEndPoint ip, Server server)
        {
            try
            {
                Packets.LinkSocialNetworkPacket packet = Packets.Packet.Unpack <Packets.LinkSocialNetworkPacket>(data);

                server.DebugInfo("Social Network Link Delete Request: Request recieved");
                server.DebugInfo("Packet DeleteLinkSocialNetworkReq: " + packet.ToString());

                // Who is making the query
                ClientLogic.ClientStatus client = server.GetClient(packet.ClientUsername);

                // Check the basics of connection
                if (ClientLogic.ClientsManagement.CheckBasics(client, ClientLogic.ClientStatus.Status.Disconnected, packet.Alea, out string message))
                {
                    // Check if the link already exists
                    using (var db = new Models.ServerDatabase())
                    {
                        if (db.LinkedSocialNetworks
                            .Any(l => l.Client.Username.Equals(packet.ClientUsername) &&
                                 l.SocialNetwork.Name.Equals(packet.SocialNetName)))
                        {
                            // If exist delete
                            db.LinkedSocialNetworks.DeleteOnSubmit(
                                db.LinkedSocialNetworks
                                .Single(l => l.Client.Username.Equals(packet.ClientUsername) &&
                                        l.SocialNetwork.Name.Equals(packet.SocialNetName)));

                            server.DebugInfo("Delete Social Network Link: The link has been deleted.");

                            // Submit changes
                            db.SubmitChanges();

                            // Send the ack
                            server.Udp.SendMessage(new Packets.AckErrorPacket(Packets.PacketTypes.DeleteLinkSocialNetAck,
                                                                              "Social net deleted correctly.").Pack(), ip);
                            return;
                        }
                        else
                        {
                            server.DebugInfo("Delete Social Network Link: Social net doesn't exist, can't be deleted.");
                            // Send the ack
                            server.Udp.SendMessage(new Packets.AckErrorPacket(Packets.PacketTypes.Error,
                                                                              "Social net doesn't exist.").Pack(), ip);
                        }
                    }
                }
                else
                {
                    server.DebugInfo("Delete Social Network Link: " + message);
                    server.Udp.SendError(message, ip);
                }
            }
            catch (SqlException)
            {
                server.DebugInfo("Delete Social Network Link: Database error.");
                server.Udp.SendError("Database error. Probably no social net found on database.", ip);
                return;
            }
        }
예제 #2
0
        public static void LinkSocialNet(byte[] data, IPEndPoint ip, Server server)
        {
            try {
                Packets.LinkSocialNetworkPacket packet = Packets.Packet.Unpack <Packets.LinkSocialNetworkPacket>(data);

                server.DebugInfo("Social Network Link: Request recieved");
                server.DebugInfo("Packet LinkSocialNetworkReq: " + packet.ToString());

                // Who is making the query
                ClientLogic.ClientStatus client = server.GetClient(packet.ClientUsername);

                // Check the basics of connection
                if (ClientLogic.ClientsManagement.CheckBasics(client, ClientLogic.ClientStatus.Status.Disconnected, packet.Alea, out string message))
                {
                    // Check if the link already exists
                    using (var db = new Models.ServerDatabase())
                    {
                        if (db.LinkedSocialNetworks
                            .Any(l => l.Client.Username.Equals(packet.ClientUsername) &&
                                 l.SocialNetwork.Name.Equals(packet.SocialNetName)))
                        {
                            // Link exists on database -> Override it
                            var sn = db.LinkedSocialNetworks.Single(l => l.Client.Username.Equals(packet.ClientUsername) &&
                                                                    l.SocialNetwork.Name.Equals(packet.SocialNetName));

                            sn.Username = packet.SocialNetUsername;
                            sn.Password = packet.SocialNetPassword;

                            server.DebugInfo("Social Network Link: The link already exists, overriding it.");
                            return;
                        }
                        else
                        {
                            server.DebugInfo("Social Network Link: Social net linked correctly.");
                            db.LinkedSocialNetworks.InsertOnSubmit(new Models.LinkedSocialNetwork()
                            {
                                Client        = db.Clients.Single(c => c.Username.Equals(packet.ClientUsername)),
                                SocialNetwork = db.SocialNetworks.Single(c => c.Name.Equals(packet.SocialNetName)),
                                Username      = packet.SocialNetUsername,
                                Password      = packet.SocialNetPassword
                            });
                        }

                        // Submit changes
                        db.SubmitChanges();

                        // Send the ack
                        server.Udp.SendMessage(new Packets.AckErrorPacket(Packets.PacketTypes.LinkSocialNetworkAck,
                                                                          "Social net linked correctly.").Pack(), ip);
                    }
                }
                else
                {
                    server.DebugInfo("Social Network Link: " + message);
                    server.Udp.SendError(message, ip);
                }
            }
            catch (SqlException e)
            {
                server.DebugInfo("Social Network Link: Database error.");
                server.Udp.SendError("Database error. Probably no social net found on database.", ip);
                return;
            }
        }