public async Task <IActionResult> AddSubjectInClass([FromForm] SubjectForClassCreationDto subjectForClassCreationDto)
        {
            if (subjectForClassCreationDto == null)
            {
                return(BadRequest());
            }

            if (!await _repo.IsExistClass(subjectForClassCreationDto.ClassId))
            {
                return(BadRequest("Class Doesn't Exist"));
            }

            var createdClass = await _repo.GetClassById(subjectForClassCreationDto.ClassId);

            if (!await _repo.IsExistSubject(subjectForClassCreationDto.SubjectId))
            {
                return(BadRequest("Subject Doesn't Exist"));
            }

            if (await _repo.IsExistSubjectInClass(subjectForClassCreationDto.ClassId, subjectForClassCreationDto.SubjectId))
            {
                return(BadRequest("Subject Exist in this class"));
            }


            var subject = await _repo.GetSubjectById(subjectForClassCreationDto.SubjectId);

            var subjectImage = subjectForClassCreationDto.SubjectImage;

            var imagePath = _repo.AddImage(subjectImage, "Subject");

            var createdSubjectForClass = _mapper.Map <SubjectForClass>(subjectForClassCreationDto);

            createdSubjectForClass.ClassName   = createdClass.Name;
            createdSubjectForClass.SubjectName = subject.Name;
            createdSubjectForClass.VirtualPath = imagePath.VirtualPath;
            createdSubjectForClass.FileName    = imagePath.FileName;
            createdSubjectForClass.CreatedDate = DateTime.Now;

            _repo.Add <SubjectForClass>(createdSubjectForClass);

            if (await _repo.SaveAll())
            {
                return(Ok());
            }

            return(BadRequest("Failed to add subject in the class"));
        }