Esempio n. 1
0
        public async Task <IActionResult> AddAcademicYearAsync([FromBody] AddInstituteAcademicYearAc newAcademicYearAc)
        {
            if (ModelState.IsValid)
            {
                ApplicationUser currentUser = await _userManager.FindByEmailAsync(User.Identity.Name);

                return(Ok(await _instituteAcademicYearManagementRepository.AddAcademicYearAsync(newAcademicYearAc, currentUser)));
            }
            else if (string.IsNullOrEmpty(newAcademicYearAc.AcademicYearCode))
            {
                return(Ok(new { Message = "Year Code can not be null or empty", HasError = true }));
            }
            else if (string.IsNullOrEmpty(newAcademicYearAc.ChallanStartingNumber))
            {
                return(Ok(new { Message = "Starting Challan number can not be null or empty", HasError = true }));
            }
            else
            {
                return(Ok(new { Message = "From Date and To Date can not by null or empty", HasError = true }));
            }
        }
        /// <summary>
        /// Method for adding new academic year
        /// </summary>
        /// <param name="newAcademicYearAc"></param>
        /// <param name="currentUser"></param>
        /// <returns></returns>
        public async Task <dynamic> AddAcademicYearAsync(AddInstituteAcademicYearAc newAcademicYearAc, ApplicationUser currentUser)
        {
            int currentUserInstituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(currentUser.Id, true);

            InstituteAcademicYear existingAcademicYear = await _imsDbContext.InstituteAcademicYears.FirstOrDefaultAsync(x => x.FromDate == newAcademicYearAc.FromDate &&
                                                                                                                        x.ToDate == newAcademicYearAc.ToDate && x.InstituteId == currentUserInstituteId);

            if (existingAcademicYear != null)
            {
                return(new { Message = "Academic year already exist within the same date range", HasError = true });
            }
            else if (await _imsDbContext.InstituteAcademicYears.AnyAsync(x => x.AcademicYearCode.ToLowerInvariant().Equals(newAcademicYearAc.AcademicYearCode.ToLowerInvariant()) &&
                                                                         x.InstituteId == currentUserInstituteId))
            {
                return(new { Message = "Academic year code already exist", HasError = true });
            }
            else if (newAcademicYearAc.IsActive && await _imsDbContext.InstituteAcademicYears.AnyAsync(x => x.IsActive && x.InstituteId == currentUserInstituteId))
            {
                return(new { Message = "Another academic year is already active", HasError = true });
            }

            // Add new academic year
            InstituteAcademicYear newAcademicYear = new InstituteAcademicYear
            {
                AcademicYearCode      = newAcademicYearAc.AcademicYearCode,
                ChallanStartingNumber = newAcademicYearAc.ChallanStartingNumber,
                FromDate    = newAcademicYearAc.FromDate,
                ToDate      = newAcademicYearAc.ToDate,
                IsActive    = newAcademicYearAc.IsActive,
                CreatedBy   = currentUser.Id,
                CreatedOn   = DateTime.UtcNow,
                InstituteId = currentUserInstituteId
            };

            _imsDbContext.InstituteAcademicYears.Add(newAcademicYear);
            await _imsDbContext.SaveChangesAsync();

            return(new { Message = "Academic year added successfully" });
        }
        /// <summary>
        /// Method for updating an academic year
        /// </summary>
        /// <param name="id"></param>
        /// <param name="updatedAcademicYearAc"></param>
        /// <returns></returns>
        public async Task <dynamic> UpdateAcademicYearAsync(int id, AddInstituteAcademicYearAc updatedAcademicYearAc, ApplicationUser currentUser)
        {
            int currentUserInstituteId = await _instituteUserMappingHelperService.GetUserCurrentSelectedInstituteIdAsync(currentUser.Id, true);

            InstituteAcademicYear academicYear = await _imsDbContext.InstituteAcademicYears.FirstOrDefaultAsync(x => x.Id == id && x.InstituteId == currentUserInstituteId);

            if (academicYear == null)
            {
                return(new { Message = "No academic year exists with this id", HasError = true });
            }
            else if (await _imsDbContext.InstituteAcademicYears.AnyAsync(x => x.Id != id && x.FromDate == updatedAcademicYearAc.FromDate &&
                                                                         x.ToDate == updatedAcademicYearAc.ToDate && x.InstituteId == currentUserInstituteId))
            {
                return(new { Message = "Academic year already exist within the same date range", HasError = true });
            }
            else if (await _imsDbContext.InstituteAcademicYears.AnyAsync(x => x.Id != id &&
                                                                         x.AcademicYearCode.ToLowerInvariant().Equals(updatedAcademicYearAc.AcademicYearCode.ToLowerInvariant()) && x.InstituteId == currentUserInstituteId))
            {
                return(new { Message = "Academic year code already exist", HasError = true });
            }
            else if (updatedAcademicYearAc.IsActive && await _imsDbContext.InstituteAcademicYears.AnyAsync(x => x.Id != id && x.IsActive && x.InstituteId == currentUserInstituteId))
            {
                return(new { Message = "Another academic year is already active", HasError = true });
            }
            else
            {
                academicYear.AcademicYearCode      = updatedAcademicYearAc.AcademicYearCode;
                academicYear.ChallanStartingNumber = updatedAcademicYearAc.ChallanStartingNumber;
                academicYear.IsActive  = updatedAcademicYearAc.IsActive;
                academicYear.FromDate  = updatedAcademicYearAc.FromDate;
                academicYear.ToDate    = updatedAcademicYearAc.ToDate;
                academicYear.UpdatedBy = currentUser.Id;
                academicYear.UpdatedOn = DateTime.UtcNow;
                _imsDbContext.InstituteAcademicYears.Update(academicYear);
                await _imsDbContext.SaveChangesAsync();

                return(new { Message = "Academic year updated successfully" });
            }
        }