private void CreateClientSchoolPackage() { string clientSchoolCodePath = ""; try { progressBar1.Visible = true; progressBar1.Value = 10; string schoolCode = txtSchoolCode.Text.Trim(); clientSchoolCodePath = Path.Combine(_clientDistributionRootPath, schoolCode); string clientVideoPath = ClientHelper.GetRegisteredSchoolPackageVideoPath(schoolCode, txtSchoolCity.Text.Trim()); // string clientThumbnailPath = ClientHelper.GetRegisteredSchoolPackageThumbnailPath(schoolCode); // Path.Combine(clientPacakgeFolderPath, "Thumbnails"); string clientVideoFolderName = ClientHelper.GetClientVideoFolderName(schoolCode, txtSchoolCity.Text.Trim()); List <VideoInfo> videoInfoList = new List <VideoInfo>(); #region Create Folder Structure // Create client distribution root folder. if (Directory.Exists(_clientDistributionRootPath) == false) { Directory.CreateDirectory(_clientDistributionRootPath); } // Define client pacakge root folder path i.e. school code if (Directory.Exists(clientSchoolCodePath) == false) { Directory.CreateDirectory(clientSchoolCodePath); } // Delete all old directory and files else if (Directory.Exists(clientSchoolCodePath)) { string[] oldClientFiles = Directory.GetDirectories(clientSchoolCodePath); for (int i = 0; i < oldClientFiles.Length; i++) { //System.IO.File.Delete(Path.Combine(clientSchoolCodeFolderPath, oldClientFiles[i])); System.IO.Directory.Delete(oldClientFiles[i], true); } oldClientFiles = Directory.GetFiles(clientSchoolCodePath); for (int i = 0; i < oldClientFiles.Length; i++) { System.IO.File.Delete(oldClientFiles[i]); } } progressBar1.Value = 25; //// Define client pacakge folder path i.e. pacakage //string clientPacakgeFolderPath = ClientHelper.GetClientRegistrationPackagePath(schoolCode); // Path.Combine(clientSchoolCodeFolderPath, "Package"); //if (Directory.Exists(clientPacakgeFolderPath) == false) //{ // Directory.CreateDirectory(clientPacakgeFolderPath); //} // Define client video folder path i.e. SchoolCode_City_LBFVideos if (Directory.Exists(clientVideoPath) == false) { Directory.CreateDirectory(clientVideoPath); } // Make client video folder hidden DirectoryInfo clientVideoFolderInfo = new DirectoryInfo(clientVideoPath); clientVideoFolderInfo.Attributes = FileAttributes.Hidden; //if (Directory.Exists(clientThumbnailPath) == false) //{ // Directory.CreateDirectory(clientThumbnailPath); //} //DirectoryInfo clientPackageThumbnailPathDirInfo = new DirectoryInfo(clientThumbnailPath); //clientPackageThumbnailPathDirInfo.Attributes = FileAttributes.Hidden; progressBar1.Value = 30; #endregion #region Copy Client Distribution if (Directory.Exists(ConfigHelper.ClientDistributionPath)) { string[] clientDistributionFiles = Directory.GetFiles(ConfigHelper.ClientDistributionPath); for (int i = 0; i < clientDistributionFiles.Length; i++) { string targetFilePath = Path.Combine(clientSchoolCodePath, Path.GetFileName(clientDistributionFiles[i])); System.IO.File.Copy(Path.Combine(ConfigHelper.ClientDistributionPath, clientDistributionFiles[i]), targetFilePath, true); if (_nonHiddenFiles.Contains(Path.GetFileName(targetFilePath).ToLower()) == false) { FileInfo targetFileInfo = new FileInfo(targetFilePath); targetFileInfo.Attributes = FileAttributes.Hidden; } } //// Create shortcut of exe. //WshShellClass shell = new WshShellClass(); //IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(Path.Combine(clientSchoolCodeFolderPath, "LBSVideoLib.Client.exe.lnk")); //shortcut.TargetPath = Path.Combine(clientPacakgeFolderPath, "LBSVideoLib.Client.exe"); //// add Description of Short cut //shortcut.Description = "Run this exe to play LBF Video Library."; //// save it / create //shortcut.Save(); } else { MessageBox.Show("Unable to find client distribution on specified path.", "Error", MessageBoxButtons.OK); } progressBar1.Value = 45; for (int i = 0; i < chkListBooks.CheckedItems.Count; i++) { Book selectedBook = (chkListBooks.CheckedItems[i]) as Book; if (selectedBook.VideoList != null) { // string[] selectedBookVideos = Directory.GetFiles(selectedBook.BookId); foreach (string selectedBookVideo in selectedBook.VideoList) { string clientTargetVideoPath = Path.Combine(clientVideoPath, selectedBook.ClassName); string clientVideoRelativePath = Path.Combine(clientVideoFolderName, selectedBook.ClassName); if (Directory.Exists(clientTargetVideoPath) == false) { Directory.CreateDirectory(clientTargetVideoPath); } DirectoryInfo clientTargetVideoPathInfo = new DirectoryInfo(clientTargetVideoPath); clientTargetVideoPathInfo.Attributes = FileAttributes.Hidden; clientTargetVideoPath = Path.Combine(clientTargetVideoPath, selectedBook.SeriesName); clientVideoRelativePath = Path.Combine(clientVideoRelativePath, selectedBook.SeriesName); if (Directory.Exists(clientTargetVideoPath) == false) { Directory.CreateDirectory(clientTargetVideoPath); } clientTargetVideoPathInfo = new DirectoryInfo(clientTargetVideoPath); clientTargetVideoPathInfo.Attributes = FileAttributes.Hidden; clientTargetVideoPath = Path.Combine(clientTargetVideoPath, selectedBook.SubjectName); clientVideoRelativePath = Path.Combine(clientVideoRelativePath, selectedBook.SubjectName); if (Directory.Exists(clientTargetVideoPath) == false) { Directory.CreateDirectory(clientTargetVideoPath); } clientTargetVideoPathInfo = new DirectoryInfo(clientTargetVideoPath); clientTargetVideoPathInfo.Attributes = FileAttributes.Hidden; clientTargetVideoPath = Path.Combine(clientTargetVideoPath, selectedBook.BookName); clientVideoRelativePath = Path.Combine(clientVideoRelativePath, selectedBook.BookName); if (Directory.Exists(clientTargetVideoPath) == false) { Directory.CreateDirectory(clientTargetVideoPath); } clientTargetVideoPathInfo = new DirectoryInfo(clientTargetVideoPath); clientTargetVideoPathInfo.Attributes = FileAttributes.Hidden; if (Directory.Exists(clientTargetVideoPath) == false) { Directory.CreateDirectory(clientTargetVideoPath); } clientTargetVideoPathInfo = new DirectoryInfo(clientTargetVideoPath); clientTargetVideoPathInfo.Attributes = FileAttributes.Hidden; VideoInfo videoInfo = new VideoInfo(); videoInfo.VideoName = Path.GetFileName(selectedBookVideo); videoInfo.ClassName = selectedBook.ClassName; videoInfo.SeriesName = selectedBook.SeriesName; videoInfo.Subject = selectedBook.SubjectName; videoInfo.Book = selectedBook.BookName; clientTargetVideoPath = Path.Combine(clientTargetVideoPath, Path.GetFileName(selectedBookVideo)); clientVideoRelativePath = Path.Combine(clientVideoRelativePath, Path.GetFileName(selectedBookVideo)); //videoInfo.VideoFullUrl = clientTargetVideoPath; videoInfo.VideoFullUrl = clientVideoRelativePath; videoInfo.VideoRelativeUrl = clientVideoRelativePath; Cryptograph.EncryptFile(selectedBookVideo, clientTargetVideoPath); // Nitin Start 03-Sep // Copy thumbnail file string targetThumbnailFilePath = ThumbnailHelper.GetThumbnailDirectoryPathByVideoPath(clientTargetVideoPath); if (System.IO.File.Exists(targetThumbnailFilePath) == false) { if (Directory.Exists(targetThumbnailFilePath) == false) { Directory.CreateDirectory(targetThumbnailFilePath); } string sourceThumbnailFilePath = ThumbnailHelper.GetThumbnailFilePathByVideoPath(selectedBookVideo); targetThumbnailFilePath = Path.Combine(targetThumbnailFilePath, ThumbnailHelper.GetThumbnailFileNameByVideoPath(selectedBookVideo)); System.IO.File.Copy(sourceThumbnailFilePath, targetThumbnailFilePath, true); } // Nitin End 03-Sep FileInfo clientTargetVideoPathFileInfo = new FileInfo(clientTargetVideoPath); clientTargetVideoPathFileInfo.Attributes = FileAttributes.Hidden; videoInfoList.Add(videoInfo); } } } // Nitin Start //string[] subjectThumbnailFiles = Directory.GetFiles(ClientHelper.GetSubjectThumbnailSourcePath()); //for (int i = 0; i < subjectThumbnailFiles.Length; i++) //{ // string thumbnailFilePath = Path.Combine(clientThumbnailPath, Path.GetFileName(subjectThumbnailFiles[i])); // System.IO.File.Copy(subjectThumbnailFiles[i], thumbnailFilePath, true); // FileInfo thumbnailFilePathFileInfo = new FileInfo(thumbnailFilePath); // thumbnailFilePathFileInfo.Attributes = FileAttributes.Hidden; //} // Nitin End #endregion progressBar1.Value = 70; string newMemoNumber = GenerateNewMemoNumber(); // Save data on firebase RegInfoFB selectedClassList = SaveRegDataOnFireBase(newMemoNumber); string registeredSchoolInfo = Newtonsoft.Json.JsonConvert.SerializeObject(selectedClassList); // Nitin Start CreateRegisteredSchoolInfoFile(registeredSchoolInfo, schoolCode, txtSchoolCity.Text.Trim(), txtSchoolName.Text.Trim(), newMemoNumber); // Nitin End progressBar1.Value = 80; // Set client email, password and license date in client info class. ClientInfo clientInfo = new ClientInfo(); clientInfo.EmailId = txtEmailId.Text.ToLower().Trim(); clientInfo.Password = txtPwd.Text.Trim(); clientInfo.RegistrationDate = DateTime.Now; clientInfo.SessionStartDate = LicenseHelper.GetSessionStartDateBySessionString(cmbSchoolSession.SelectedItem.ToString()); clientInfo.SessionEndDate = LicenseHelper.GetSessionEndDateBySessionString(cmbSchoolSession.SelectedItem.ToString()); clientInfo.LastAccessEndTime = clientInfo.SessionStartDate; clientInfo.SessionString = cmbSchoolSession.SelectedItem.ToString(); clientInfo.SchoolId = this.txtSchoolCode.Text.Trim(); clientInfo.SchoolName = this.txtSchoolName.Text.Trim(); clientInfo.SchoolCity = txtSchoolCity.Text.Trim(); clientInfo.SelectedVideoDetails = selectedClassList.Classes; clientInfo.VideoInfoList = videoInfoList; clientInfo.MemoNumber = newMemoNumber; // Generate client info json file and encrypt it. string clientInfoFilePath = Path.Combine(clientSchoolCodePath, _clientInfoFileName); Cryptograph.EncryptObject(clientInfo, clientInfoFilePath); FileInfo clientInfoFileInfo = new FileInfo(clientInfoFilePath); clientInfoFileInfo.Attributes = FileAttributes.Hidden; progressBar1.Value = 99; //string clientInfoPlainText = Newtonsoft.Json.JsonConvert.SerializeObject(clientInfo); //sw = System.IO.File.CreateText(Path.Combine(ClientHelper.GetRegisteredSchoolInfoFilePath(), this.txtSchoolCode.Text.Trim() + "-Plain.txt")); //sw.Write(clientInfoPlainText); //sw.Flush(); //sw.Close(); progressBar1.Value = 100; progressBar1.Visible = false; // Copy client project bin folder to target location. MessageBox.Show("Registration completed successfully.", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information); InitializeRegistrationForm(); } catch (Exception ex) { // Delete all file on folder if (Directory.Exists(clientSchoolCodePath)) { // Delete created package folder inside school code System.IO.Directory.Delete(clientSchoolCodePath, true); } MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw; } finally { progressBar1.Visible = false; } }