Ejemplo n.º 1
0
        /// <summary>
        /// Method for setting bell notification on creation of homeworks
        /// </summary>
        /// <param name="homeWork"></param>
        /// <param name="currentUser"></param>
        /// <param name="instituteId"></param>
        /// <returns></returns>
        private async Task SendBellNotificationOnHomewordCreation(AddHomeworkManagementAc homeWork, ApplicationUser currentUser, int instituteId)
        {
            StaffBasicPersonalInformation homeWorkCreatedByStaff = await _iMSDbContext.StaffBasicPersonalInformation
                                                                   .FirstOrDefaultAsync(x => x.UserId == currentUser.Id);

            List <StudentBasicInformation> recipientStudentsList = await _iMSDbContext.StudentBasicInformation
                                                                   .Where(x => x.CurrentClassId == homeWork.ClassId && x.SectionId == homeWork.SectionId && x.IsActive && !x.IsArchived)
                                                                   .ToListAsync();

            NotificationAc notificationAc = new NotificationAc
            {
                NotificationMessage          = "Homework",
                NotificationTo               = null,
                NotificationUserMappingsList = new List <NotificationUserMappingAc>()
            };

            // For students
            notificationAc.NotificationDetails = string.Format("Homework: Complete assignment dated {0}", homeWork.HomeworkDate.ToString("dd-MM-yyyy"));
            foreach (StudentBasicInformation recipientStudent in recipientStudentsList)
            {
                notificationAc.NotificationUserMappingsList.Add(new NotificationUserMappingAc
                {
                    UserId = recipientStudent.UserId
                });
            }
            await _notificationManagementRepository.AddNotificationAsync(notificationAc, instituteId, currentUser);

            notificationAc.NotificationUserMappingsList = new List <NotificationUserMappingAc>();

            if (homeWorkCreatedByStaff != null)
            {
                InstituteClass instituteClass = await _iMSDbContext.InstituteClasses
                                                .Include(x => x.Institute)
                                                .FirstAsync(x => x.Id == homeWork.ClassId);

                // To self
                notificationAc.NotificationDetails = string.Format("You have added homework for {0}", instituteClass.Name);
                notificationAc.NotificationUserMappingsList.Add(new NotificationUserMappingAc
                {
                    UserId = homeWorkCreatedByStaff.UserId
                });

                await _notificationManagementRepository.AddNotificationAsync(notificationAc, instituteId, currentUser);

                notificationAc.NotificationUserMappingsList = new List <NotificationUserMappingAc>();

                // To the admin
                notificationAc.NotificationDetails = string.Format("{0} has added homework for {1}", homeWorkCreatedByStaff.FirstName, instituteClass.Name);
                notificationAc.NotificationUserMappingsList.Add(new NotificationUserMappingAc
                {
                    UserId = instituteClass.Institute.AdminId
                });

                await _notificationManagementRepository.AddNotificationAsync(notificationAc, instituteId, currentUser);

                notificationAc.NotificationUserMappingsList = new List <NotificationUserMappingAc>();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Method to add or update homework - SS
        /// </summary>
        /// <param name="homeWork">home work</param>
        /// <param name="loggedInUser">logged in user</param>
        /// <returns>response</returns>
        public async Task <HomeworkManagementResponse> AddOrUpdateHomeworkAsync(AddHomeworkManagementAc homeWork, ApplicationUser loggedInUser)
        {
            var instituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(loggedInUser.Id, true);

            if (!await _iMSDbContext.StaffBasicPersonalInformation.AnyAsync(x => x.Id == homeWork.StaffId && x.InstituteId == instituteId))
            {
                return new HomeworkManagementResponse()
                       {
                           Message = "Staff not found", HasError = true, ErrorType = HomeworkManagementReponseType.StaffId
                       }
            }
            ;
            else if (!await _iMSDbContext.InstituteClasses.AnyAsync(x => x.Id == homeWork.ClassId && x.InstituteId == instituteId))
            {
                return new HomeworkManagementResponse()
                       {
                           Message = "Class not found", HasError = true, ErrorType = HomeworkManagementReponseType.ClassId
                       }
            }
            ;
            else if (!await _iMSDbContext.Sections.AnyAsync(x => x.Id == homeWork.SectionId && x.InstituteId == instituteId))
            {
                return new HomeworkManagementResponse()
                       {
                           Message = "Section not found", HasError = true, ErrorType = HomeworkManagementReponseType.SectionId
                       }
            }
            ;
            else
            {
                var subjectIds = homeWork.HomeworkSubjectMappings.Select(x => x.SubjectId).Distinct().ToList();

                var subjectCount = await _iMSDbContext.InstituteClassSubjectMappings.CountAsync(x => subjectIds.Contains(x.SubjectId) &&
                                                                                                x.ClassId == homeWork.ClassId && x.FacultyId == homeWork.StaffId || x.AlternateFacultyId == homeWork.StaffId);

                if (subjectIds.Count != subjectCount)
                {
                    return new HomeworkManagementResponse()
                           {
                               Message = "Subject not found", HasError = true, ErrorType = HomeworkManagementReponseType.SubjectId
                           }
                }
                ;
                else
                {
                    var homeworkTexts = homeWork.HomeworkSubjectMappings.Select(x => x.HomeworkData).ToList();

                    if (homeworkTexts.Any(x => string.IsNullOrEmpty(x.Trim())))
                    {
                        return new HomeworkManagementResponse()
                               {
                                   Message = "Home can't be empty", HasError = true, ErrorType = HomeworkManagementReponseType.HomeworkData
                               }
                    }
                    ;
                    else
                    {
                        var homework = await _iMSDbContext.Homeworks.FirstOrDefaultAsync(x => x.ClassId == homeWork.ClassId &&
                                                                                         x.StaffId == homeWork.StaffId && x.SectionId == homeWork.SectionId && x.HomeworkDate == homeWork.HomeworkDate);

                        if (homework == null)
                        {
                            homework = new Homework()
                            {
                                ClassId      = homeWork.ClassId,
                                CreatedOn    = DateTime.UtcNow,
                                HomeworkDate = homeWork.HomeworkDate,
                                SectionId    = homeWork.SectionId,
                                StaffId      = homeWork.StaffId,
                                UpdatedById  = loggedInUser.Id,
                                UpdatedOn    = DateTime.UtcNow
                            };
                            _iMSDbContext.Homeworks.Add(homework);
                            await _iMSDbContext.SaveChangesAsync();
                        }
                        else
                        {
                            homework.UpdatedById = loggedInUser.Id;
                            homework.UpdatedOn   = DateTime.UtcNow;
                            _iMSDbContext.Homeworks.Update(homework);
                            await _iMSDbContext.SaveChangesAsync();

                            var previousHomeWorkSubjects = await _iMSDbContext.HomeworkSubjectMappings.Where(x => x.HomeworkId == homework.Id).ToListAsync();

                            if (previousHomeWorkSubjects.Count != 0)
                            {
                                using (var db = await _iMSDbContext.Database.BeginTransactionAsync())
                                {
                                    await _iMSDbContext.BulkDeleteAsync(previousHomeWorkSubjects);

                                    db.Commit();
                                }
                            }
                        }
                        List <HomeworkSubjectMapping> homeworkSubjects = new List <HomeworkSubjectMapping>();
                        foreach (var homeworkSubject in homeWork.HomeworkSubjectMappings)
                        {
                            homeworkSubjects.Add(new HomeworkSubjectMapping()
                            {
                                CreatedOn    = DateTime.UtcNow,
                                HomeworkData = homeworkSubject.HomeworkData,
                                HomeworkId   = homework.Id,
                                IsSelected   = homeworkSubject.IsSelected,
                                SubjectId    = homeworkSubject.SubjectId
                            });
                        }
                        using (var db = await _iMSDbContext.Database.BeginTransactionAsync())
                        {
                            await _iMSDbContext.BulkInsertAsync(homeworkSubjects);

                            db.Commit();
                        }

                        // Set bell notification
                        await SendBellNotificationOnHomewordCreation(homeWork, loggedInUser, instituteId);

                        return(new HomeworkManagementResponse()
                        {
                            HasError = false, Message = "Homework updated successfully", Data = new { Id = homework.Id }
                        });
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> AddOrUpdateHomeworkAsync([FromBody] AddHomeworkManagementAc addHomework)
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            return(Ok(await _homeworkManagementRepository.AddOrUpdateHomeworkAsync(addHomework, user)));
        }