コード例 #1
0
        public bool GradeFile(bool gradeBool, int fileId, string userName)
        {
            using (var connection = new SqlConnection(_connectionString))
            {
                int userId = userDAL.GetUserId(userName);

                var checkExistGrade = new SqlCommand("SELECT COUNT(UserId) FROM dbo.GradeTable WHERE FileId = @FileId AND UserId = @UserId", connection);
                checkExistGrade.Parameters.AddWithValue("@FileId", fileId);
                checkExistGrade.Parameters.AddWithValue("@UserId", userId);

                var checkExistSameGrade = new SqlCommand("SELECT CheckGrade FROM dbo.GradeTable WHERE FileId = @FileId AND UserId=@UserId", connection);
                checkExistSameGrade.Parameters.AddWithValue("@FileId", fileId);
                checkExistSameGrade.Parameters.AddWithValue("@UserId", userId);

                var insertNewGradeTable = new SqlCommand("INSERT INTO dbo.GradeTable (FileId,UserId,CheckGrade) VALUES (@FileId,@UserId,@CheckGrade)", connection);
                insertNewGradeTable.Parameters.AddWithValue("@FileId", fileId);
                insertNewGradeTable.Parameters.AddWithValue("@UserId", userId);
                insertNewGradeTable.Parameters.AddWithValue("@CheckGrade", gradeBool);

                var updateGradeTable = new SqlCommand("UPDATE dbo.GradeTable SET CheckGrade = @CheckGrade WHERE FileId = @FileId AND UserId=@UserId", connection);
                updateGradeTable.Parameters.AddWithValue("@FileId", fileId);
                updateGradeTable.Parameters.AddWithValue("@UserId", userId);

                connection.Open();
                if ((int)checkExistGrade.ExecuteScalar() == 0)
                {
                    insertNewGradeTable.ExecuteNonQuery();
                    return(true);
                }
                else if (checkExistSameGrade.ExecuteScalar().GetType() == typeof(DBNull))
                {
                    updateGradeTable.Parameters.AddWithValue("@CheckGrade", gradeBool);
                    updateGradeTable.ExecuteNonQuery();
                    return(true);
                }
                else if ((bool)checkExistSameGrade.ExecuteScalar() != gradeBool)
                {
                    updateGradeTable.Parameters.AddWithValue("@CheckGrade", DBNull.Value);
                    updateGradeTable.ExecuteNonQuery();
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }