public string FileRequest(string jsonFileRequest)
        {
            FileRequestTO fileRequestTO = JsonConvert.DeserializeObject <FileRequestTO>(jsonFileRequest);
            string        jsonFileSharingDetailsList = null;
            User          userEntity = dbOperations.GetUserByUsername(fileRequestTO.Username);

            if (userEntity != null)                                                           //User exist
            {
                if (userEntity.Enabled && userEntity.Password.Equals(fileRequestTO.Password)) //Correct password
                {
                    List <File> files = null;
                    List <FileSharingDetailsTO> fileSharingDetailsTOs = new List <FileSharingDetailsTO>();
                    if (fileRequestTO.FileName.Equals("*"))
                    {
                        Dictionary <string, List <File> > filesClassifiedByName =
                            new Dictionary <string, List <File> >();

                        files = dbOperations.GetAllFiles();
                        foreach (File file in files)
                        {
                            List <File> filesWithSameName;
                            if (!filesClassifiedByName.ContainsKey(file.FileName))//Dictionary not contain file
                            {
                                filesWithSameName = new List <File>();
                                filesClassifiedByName.Add(file.FileName, filesWithSameName);
                            }
                            filesClassifiedByName.TryGetValue(file.FileName, out filesWithSameName);
                            filesWithSameName.Add(file);
                        }

                        foreach (List <File> filesWithSameName in filesClassifiedByName.Values)
                        {
                            FileSharingDetailsTO fileSharingDetailsTO = new FileSharingDetailsTO();
                            fileSharingDetailsTO.FileName = filesWithSameName.First().FileName;
                            fileSharingDetailsTO.Size     = filesWithSameName.First().Size;
                            fileSharingDetailsTO.Peers    = WCFServerUtils.GetFileSharingPeers(filesWithSameName);
                            fileSharingDetailsTOs.Add(fileSharingDetailsTO);
                        }
                    }
                    else
                    {
                        files = dbOperations.GetAllFileSharingReferencesByFileName(fileRequestTO.FileName);
                        FileSharingDetailsTO fileSharingDetailsTO = new FileSharingDetailsTO();
                        fileSharingDetailsTO.FileName = files.First().FileName;
                        fileSharingDetailsTO.Size     = files.First().Size;
                        fileSharingDetailsTO.Peers    = WCFServerUtils.GetFileSharingPeers(files);
                        fileSharingDetailsTOs.Add(fileSharingDetailsTO);
                    }
                    jsonFileSharingDetailsList = JsonConvert.SerializeObject(fileSharingDetailsTOs);
                    return(jsonFileSharingDetailsList);
                }
                Console.WriteLine("User is not enabled or password is incorrect");
            }
            Console.WriteLine("User with username {0} not exist.", fileRequestTO.Username);
            return(jsonFileSharingDetailsList);
        }
        public bool SignIn(string jsonUserDetails)
        {
            Console.WriteLine("In SignIn...");

            try
            {
                UserTO  userTO = JsonConvert.DeserializeObject <UserTO>(jsonUserDetails);
                JObject jsonUserDetailsObject = JObject.Parse(jsonUserDetails);
                string  username = userTO.Username;
                string  password = userTO.Password;

                User userEntity = dbOperations.GetUserByUsername(username);

                if (userEntity != null)
                {
                    if (userEntity.Enabled && userEntity.Password.Equals(password))
                    {
                        userEntity.Connected = true;
                        userEntity.IP        = userTO.IP;
                        userEntity.Port      = userTO.Port;
                        connectedUsers.Add(username, userTO);
                        dbOperations.UpdateUser(userEntity, username);
                        dbOperations.AddFilesByUser(WCFServerUtils.FilesListByUser(userTO));
                        Console.WriteLine("SignIn succssfully");
                        return(true);
                    }
                    Console.WriteLine("The password {0} is incorrect for username {1}", password, username);
                }
                Console.WriteLine("User with username {0} no exist", username);
                return(false);
            }
            catch (JsonReaderException ex)
            {
                Console.WriteLine("jsonUserDetails is not a valid JSON format");
                Console.WriteLine(ex.StackTrace);
            }

            return(true);
        }