예제 #1
0
        /// <summary>
        /// Method to add disciplinary - SS
        /// </summary>
        /// <param name="addDisciplinary">disciplinary</param>
        /// <param name="loggedInUser">logged in user</param>
        /// <returns>response</returns>
        public async Task <DisciplinaryManagementResponse> AddDisciplinaryAsync(AddDisciplinaryManagementAc addDisciplinary,
                                                                                ApplicationUser loggedInUser)
        {
            if (string.IsNullOrEmpty(addDisciplinary.Subject.Trim()))
            {
                return new DisciplinaryManagementResponse()
                       {
                           HasError = true, Message = "Subject can't be empty", ErrorType = DisciplinaryManagementResponseType.Subject
                       }
            }
            ;
            else if (string.IsNullOrEmpty(addDisciplinary.Description.Trim()))
            {
                return new DisciplinaryManagementResponse()
                       {
                           HasError = true, Message = "Description can't be empty", ErrorType = DisciplinaryManagementResponseType.Description
                       }
            }
            ;
            else
            {
                var instituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(loggedInUser.Id, true);

                var studentsCount = await _iMSDbContext.StudentBasicInformation.CountAsync(x => addDisciplinary.StudentIds
                                                                                           .Contains(x.Id) && x.InstituteId == instituteId);

                if (studentsCount != addDisciplinary.StudentIds.Count)
                {
                    return new DisciplinaryManagementResponse()
                           {
                               HasError = true, Message = "Student not found", ErrorType = DisciplinaryManagementResponseType.StudentId
                           }
                }
                ;
                else
                {
                    if (!await _iMSDbContext.DisciplinaryStatuses.AnyAsync(x => x.InstituteId == instituteId && x.Id == addDisciplinary.StatusId))
                    {
                        return new DisciplinaryManagementResponse()
                               {
                                   HasError = true, Message = "Status not found", ErrorType = DisciplinaryManagementResponseType.StatusId
                               }
                    }
                    ;
                    else
                    {
                        List <Disciplinary> disciplinaries = new List <Disciplinary>();

                        foreach (var studentId in addDisciplinary.StudentIds)
                        {
                            disciplinaries.Add(new Disciplinary()
                            {
                                CreatedOn   = DateTime.UtcNow,
                                Date        = addDisciplinary.Date,
                                Description = addDisciplinary.Description,
                                Remarks     = addDisciplinary.Remarks,
                                StatusId    = addDisciplinary.StatusId,
                                StudentId   = studentId,
                                Subject     = addDisciplinary.Subject,
                                UpdatedById = loggedInUser.Id,
                                UpdatedOn   = DateTime.UtcNow
                            });
                        }
                        using (var db = await _iMSDbContext.Database.BeginTransactionAsync())
                        {
                            await _iMSDbContext.BulkInsertAsync(disciplinaries);

                            db.Commit();
                        }
                        return(new DisciplinaryManagementResponse()
                        {
                            HasError = false, Message = "Disciplinary added successfully", Data = disciplinaries.Select(s => s.Id)
                        });
                    }
                }
            }
        }
        public async Task <IActionResult> AddDisciplinaryAsync([FromBody] AddDisciplinaryManagementAc addDisciplinary)
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            return(Ok(await _disciplinaryManagementRepository.AddDisciplinaryAsync(addDisciplinary, user)));
        }