コード例 #1
0
        public async Task <StudentExtraHours> UpdateStudentExtraHours(StudentExtraHours data, IPrincipal currentUser)
        {
            var claims    = ((ClaimsIdentity)currentUser.Identity).Claims;
            var oldRecord = await _db.StudentExtraHours.FirstOrDefaultAsync(x => x.Id == data.Id);

            if (oldRecord.UserCreatedUniqueId != data.UserCreatedUniqueId && Int32.Parse(claims.First(x => x.Type.Contains("level_id")).Value) >= 3)
            {
                throw new UnauthorizedAccessException("You can only edit the records you created.");
            }

            data.Version++;
            data.CreateDate = DateTime.Now;
            data.Reason     = null;

            return(await CreateStudentExtraHours(data));
        }
コード例 #2
0
        public async Task <StudentExtraHours> CreateStudentExtraHours(StudentExtraHours data)
        {
            var currentStudent = await _db.StudentHighestAbsenceCourseCount
                                 .Where(x => x.StudentUniqueId == data.StudentUniqueId).AsNoTracking().FirstOrDefaultAsync();

            if (currentStudent == null)
            {
                throw new FormatException($"The Student Id: {data.StudentUniqueId} doesn't exist.");
            }

            data.FirstName   = currentStudent.FirstName;
            data.LastSurname = currentStudent.LastSurname;
            data.SchoolYear  = currentStudent.SchoolYear.Value;
            data.GradeLevel  = currentStudent.GradeLevel;

            using (var transaction = _db.Database.BeginTransaction())
            {
                if (data.StudentExtraHoursId != 0)
                {
                    await _db.Database.ExecuteSqlRawAsync("SET IDENTITY_INSERT [student360].[StudentExtraHours] On");
                }

                _db.StudentExtraHours.Add(data);
                await _db.SaveChangesAsync();

                if (data.StudentExtraHoursId != 0)
                {
                    await _db.Database.ExecuteSqlRawAsync("SET IDENTITY_INSERT [student360].[StudentExtraHours] Off");
                }

                await transaction.CommitAsync();
            }



            return(data);
        }