# DetailSample.cs [C#]

[C#]

       //Encrypt password
       public string GetPasswordEncrypt(string password, string serialNumber)
       {
           byte[] hash = GetHashKey(serialNumber);
           string passwordEncrypt = Encrypt(hash, password);
           return passwordEncrypt;
       }

[C#]

       //Get encryption key
       private byte[] GetHashKey(string hashKey)
       {
           // Initialise
           UTF8Encoding encoder = new UTF8Encoding();

           // Get the salt
           string salt = "fCycS3qSKsUlNz7wCb39XckN";
           byte[] saltBytes = encoder.GetBytes(salt);

           // Setup the hasher
           Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(hashKey, saltBytes);

           // Return the key
           return rfc.GetBytes(16);
       }

[C#]

       //Encrypt data by AES
       private string Encrypt(byte[] key, string dataToEncrypt)
       {
           // Initialise
           AesManaged encryptor = new AesManaged();

           // Set the key
           encryptor.Key = key;
           encryptor.IV = key;

           // create a memory stream
           using (MemoryStream encryptionStream = new MemoryStream())
           {
               // Create the crypto stream
               using (CryptoStream encrypt = new CryptoStream(encryptionStream, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
               {
                   // Encrypt
                   byte[] utfD1 = UTF8Encoding.UTF8.GetBytes(dataToEncrypt);
                   encrypt.Write(utfD1, 0, utfD1.Length);
                   encrypt.FlushFinalBlock();
                   encrypt.Close();

                   // Return the encrypted data
                   return Convert.ToBase64String(encryptionStream.ToArray());
               }
           }
       }

[C#]

       //Connect to the QL system and check credential from the SDK
       public ErrorType CheckLoginSDK(out string sessionId, out View_Manager manager, out long serverDate, string login, string password)
       {
           //Encrypt the password
           string passswordEncrypt = GetPasswordEncrypt(password, GlobalParam.SERVER_KEY);

           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<param name=manager>Manager to retrive</param>
           //<param name=serverDate>Date of the server</param>
           //<param name=login>Manager login</param>
           //<param name=password>Manager password</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.CheckLoginSDK(out sessionId, out manager, out serverDate, login, passswordEncrypt);
       }

[C#]

       //Get list of groups for a specific manager that belongs to a specific company
       public ErrorType GetGroup(out List<View_Group> listGroup, long boxId, long managerId, string sessionId)
       {
           //<param name=listGroup>List of groups retrieved for the company</param>
           //<param name=boxId>Company Id that binds user with group list</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetGroup(out listGroup, boxId, managerId, sessionId);
       }

[C#]

       //Get list of filtered groups for a specific manager that belongs to a specific company
       public ErrorType GetFilteredGroup(out List<View_Group> listGroup, string filter, long managerId, string sessionId)
       {
           //<param name=listGroup>List of filtered groups retrieved for the company</param>
           //<param name=filter>Search query</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetFilteredGroup(out listGroup, filter, managerId, sessionId);
       }

[C#]

       //Get list of player profile for all application
       public ErrorType GetPlayerProfil(out List<PlayerProfil> listPlayerProfil, long managerId, string sessionId)
       {
           //<param name=listPlayerProfil>List of player profile</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetPlayerProfil(out listPlayerProfil, managerId, sessionId);
       }

[C#]

       //Get list of players for a specific manager that belongs to a specific company
       public ErrorType GetPlayer(out List<View_Player> listPlayer, long boxId, long managerId, string sessionId)
       {
           //<param name=listPlayer>List of players retrieved for the company</param>
           //<param name=boxId>Company Id that binds user with player list</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetPlayer(out listPlayer, boxId, managerId, sessionId);
       }

[C#]

       //Get list of filtered players for a specific manager that belongs to a specific company
       public ErrorType GetFilteredPlayer(out List<View_Player> listPlayer, string filter, long managerId, string sessionId)
       {
           //<param name=listPlayer>List of players retrieved for the company</param>
           //<param name=filter>Search query</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetFilteredPlayer(out listPlayer, filter, managerId, sessionId);
       }

[C#]

       //Get list of folder for specific group
       public ErrorType GetFolder(out List<View_Folder> listFolder, long groupId, long managerId, string sessionId)
       {
           //<param name=listFolder>List of folder</param>
           //<param name=groupId>Id of group</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetFolder(out listFolder, groupId, managerId, sessionId);
       }

[C#]

       //Get list of media for specific group
       public ErrorType GetMedia(out List<View_Media> listMedia, long groupId, long managerId, string sessionId)
       {
           //<param name=listMedia>List of media for specific group</param>
           //<param name=groupId>Id of group</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetMedia(out listMedia, groupId, managerId, sessionId);
       }

[C#]

       //Get list of filtered media for specific group
       public ErrorType GetFilteredMedia(out List<View_Media> listMedia, long groupId, string filter, long managerId, string sessionId)
       {
           //<param name=listMedia>List of media for specific group</param>
           //<param name=groupId>Id of group</param>
           //<param name=filter>Search query</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetFilteredMedia(out listMedia, groupId, filter, managerId, sessionId);
       }

[C#]

       //Get list of template for specific group
       public ErrorType GetTemplate(out List<View_Template> listTemplates, long groupId, long managerId, string sessionId)
       {
           //<param name=listTemplates>List of template</param>
           //<param name=groupId>Id of group</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetTemplate(out listTemplates, groupId, managerId, sessionId);
       }

[C#]

       //Get list of filtered template for specific group
       public ErrorType GetFilteredTemplate(out List<View_Template> listTemplates, long groupId, string filter, long managerId, string sessionId)
       {
           //<param name=listTemplates>List of filtered template</param>
           //<param name=groupId>Id of group</param>
           //<param name=filter>Search query</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetFilteredTemplate(out listTemplates, groupId, filter, managerId, sessionId);
       }

[C#]

       //Get list of ticker for specific group
       public ErrorType GetBanner(out List<View_Banner> listBanner, long groupId, long managerId, string sessionId)
       {
           //<param name=listBanner>List of ticker</param>
           //<param name=groupId>Id of group</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetBanner(out listBanner, groupId, managerId, sessionId);
       }

[C#]

       //Get list of filtered ticker for specific group
       public ErrorType GetFilteredBanner(out List<View_Banner> listBanner, long groupId, string filter, long managerId, string sessionId)
       {
           //<param name=listBanner>List of ticker</param>
           //<param name=groupId>Id of group</param>
           //<param name=filter>Search query</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetFilteredBanner(out listBanner, groupId, filter, managerId, sessionId);
       }

[C#]

       //Get list of playlist for specific group
       public ErrorType GetPlaylist(out List<View_Playlist> listPlaylist, List<long> groupId, long managerId, string sessionId)
       {
           //<param name=listPlaylist>List of playlist</param>
           //<param name=groupId>Id of group</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetPlaylist(out listPlaylist, groupId, managerId, sessionId);
       }

[C#]

       //Get list of playlist component for specific playlist
       public ErrorType GetPlaylistComponent(out List<View_PlaylistComponent> listPlaylistComponent, long playlistId, long groupId, long managerId, string sessionId)
       {
           //<param name=listPlaylistComponent>List of playlist component</param>
           //<param name=playlistId>Id of playlist</param>
           //<param name=groupId>Id of group</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetPlaylistComponent(out listPlaylistComponent, playlistId, groupId, managerId, sessionId);
       }

[C#]

       //Get list of playlist ticker for specific playlist
       public ErrorType GetPlaylistBanner(out List<View_PlaylistBanner> listPlaylistBanner, long playlistId, long managerId, string sessionId)
       {
           //<param name=listPlaylistBanner>List of playlist ticker</param>
           //<param name=playlistId>Id of playlist</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetPlaylistBanner(out listPlaylistBanner, playlistId, managerId, sessionId);
       }

[C#]

       //Get list of player status for specific manager
       public ErrorType GetPlayerStatus(out List<View_StatusM> listPlayerStatus, ref long lastMonitoring, long managerId, string sessionId)
       {
           //<param name=listPlayerStatus>List of player status</param>
           //<param name=lastMonitoring>Date begin of the status list</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetPlayerStatus(out listPlayerStatus, ref lastMonitoring, managerId, sessionId);
       }

[C#]

       //Update list of player status
       public ErrorType SetPlayerStatus(out Dictionary<long, long> downloadSize, List<long> listPlayerId, int methodeTypeId, int optionTypeId, long date, long time, long managerId, string sessionId)
       {
           //<param name=listPlayerId>List of player to update</param>
           //<param name=methodeTypeId>Update methode</param>
           //<param name=optionTypeId>Update option</param>
           //<param name=date>Update time (for difered update)</param>
           //<param name=time>Update time (for difered update)</param>
           //<param name=downloadSize>Update download size (=0)</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.SetPlayerStatus(out downloadSize, listPlayerId, methodeTypeId, optionTypeId, date, time, managerId, sessionId);
       }

[C#]

       //Get list of XML media for specific group
       public ErrorType GetXMLMedia(out List<XMLMedia> listXmlMedia, long groupId, long managerId, string sessionId)
       {
           //<param name=listXmlMedia>List of XML media</param>
           //<param name=groupId>Id of group</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetXMLMedia(out listXmlMedia, groupId, managerId, sessionId);
       }

[C#]

       //Get list of title for specific XML media
       public ErrorType GetXMLMediaTitle(out List<XMLMediaTitle> listXmlMediaTitle, long xmlMediaId, long managerId, string sessionId)
       {
           //<param name=listXmlMediaTitle>List of title</param>
           //<param name=xmlMediaId>XML media</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetXMLMediaTitle(out listXmlMediaTitle, xmlMediaId, managerId, sessionId);
       }

[C#]

       //Get list of data for specific XML media
       public ErrorType GetXMLMediaData(out List<XMLMediaData> listXmlMediaData, long xmlMediaId, long managerId, string sessionId)
       {
           //<param name=listXmlMediaData>list of data</param>
           //<param name=xmlMediaId>XML media</param>
           //<param name=managerId>Manager Id retrieved at the user's connection</param>
           //<param name=sessionId>Session Id retrieved at the user's connection</param>
           //<returns>ErrorType indicates the status of the transaction</returns>
           return client.GetXMLMediaData(out listXmlMediaData, xmlMediaId, managerId, sessionId);
       }