コード例 #1
0
        /// <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;
                    }
                }
            }
        }
コード例 #2
0
        /// <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;
                    }
                }
            }
        }