/// <summary> /// Завантаження файлу до події /// </summary> /// <param name="eventId">ідентифікатор події</param> /// <param name="filepath">шлях до файлу</param> /// <param name="fileKey">ім'я файлу</param> /// <param name="type">тип файлу</param> public static void UploadFile(int eventId, string filepath, string fileKey, EventFileType type) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { connection.Open(); using (SqlTransaction transaction = connection.BeginTransaction()) using (SqlCommand query = new SqlCommand("INSERT INTO EventFile(EventId, FileType, FileKey, FilePath) Values(@EventId, @FileType, @FileKey, @FilePath)", connection, transaction)) using (SqlCommand parent = new SqlCommand(@"SELECT [Event].EventId FROM [Event] JOIN Project on (Project.ProjectId = [Event].ProjectId) WHERE Project.ParentProjectId in (SELECT Project.ProjectId FROM Project JOIN [Event] on (Project.ProjectId = [Event].ProjectId) WHERE [Event].EventId = @EventId) AND [Event].SerialNumber in (SELECT SerialNumber FROM [Event] WHERE [Event].EventId = @EventId)", connection, transaction)) { try { query.Parameters.Add("@EventId", SqlDbType.Int).Value = eventId; query.Parameters.Add("@FileType", SqlDbType.Int).Value = (int)type; query.Parameters.Add("@FileKey", SqlDbType.VarChar, 100).Value = fileKey; query.Parameters.Add("@FilePath", SqlDbType.VarChar, 100).Value = filepath; query.ExecuteNonQuery(); parent.Parameters.Add("@EventId", SqlDbType.Int).Value = eventId; List<int> eventIds = new List<int>(); //VRomanchuk //TODO: Activate MARS using (var reader = parent.ExecuteReader()) { if (reader.HasRows) while (reader.Read()) eventIds.Add((int)reader["EventId"]); } foreach (var id in eventIds) { query.Parameters["@EventId"].Value = id; query.ExecuteNonQuery(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } } }
/// <summary> /// Отримаємо шляхи до файлу /// </summary> /// <param name="eventId">id події</param> /// <param name="type">тип файлів для студента чи для викладача</param> /// <returns>словник sting, string (FileKey, FilePath)</returns> public static Dictionary<string, string> GetEventFileDictionary(int eventId, EventFileType type) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { connection.Open(); using ( SqlCommand query = new SqlCommand( "SELECT FilePath, FileKey FROM EventFile WHERE FileType = @Type AND EventId = @EventId", connection)) { query.Parameters.Add("@Type", SqlDbType.Int).Value = type; query.Parameters.Add("@EventId", SqlDbType.Int).Value = eventId; using (SqlDataReader reader = query.ExecuteReader()) { Dictionary<string, string> files = new Dictionary<string, string>(); if (reader.HasRows) while (reader.Read()) files.Add((string)reader["FilePath"], (string)reader["FileKey"]); return files; } } } }