Example #1
0
        public async Task <IActionResult> Add(IFormFile file, int gradedProjectGroupId, decimal maxGrade, decimal grade, string comment)
        {
            AddProjectGradeDto dto = new AddProjectGradeDto
            {
                File = file,
                GradedProjectGroupID = gradedProjectGroupId,
                LastEdited           = DateTime.Now,
                MaxGrade             = maxGrade,
                Grade   = grade,
                Comment = comment
            };
            ServiceResponse <AddProjectGradeDto> response = await _projectGradeService.AddProjectGrade(dto);

            if (response.Success)
            {
                return(Ok(response));
            }
            return(NotFound(response));
        }
Example #2
0
        public async Task <ServiceResponse <AddProjectGradeDto> > AddProjectGrade(AddProjectGradeDto addProjectGradeDto)
        {
            ServiceResponse <AddProjectGradeDto> response = new ServiceResponse <AddProjectGradeDto>();
            User user = await _context.Users
                        .Include(u => u.InstructedCourses)
                        .FirstOrDefaultAsync(u => u.Id == GetUserId());

            ProjectGroup projectGroup = await _context.ProjectGroups.Include(pg => pg.AffiliatedCourse)
                                        .FirstOrDefaultAsync(rg => rg.Id == addProjectGradeDto.GradedProjectGroupID);

            if (projectGroup == null)
            {
                response.Data    = null;
                response.Message = "There is no project group with this id";
                response.Success = false;
                return(response);
            }

            /*
             * if( user == null ||  !doesUserInstruct( user, projectGroup.AffiliatedCourseId ))
             * {
             *  response.Data = null;
             *  response.Message = "You are not authorized to grade this group";
             *  response.Success = false;
             *  return response;
             * }*/

            if (addProjectGradeDto.MaxGrade < addProjectGradeDto.Grade)
            {
                response.Data    = null;
                response.Message = "Grade should be less than or equal to the max grade";
                response.Success = false;
                return(response);
            }

            if (addProjectGradeDto.MaxGrade < 0)
            {
                response.Data    = null;
                response.Message = "Max grade should not be negative";
                response.Success = false;
                return(response);
            }


            ProjectGrade projectGrade = await _context.ProjectGrades
                                        .FirstOrDefaultAsync(pg => pg.GradingUserId == GetUserId() && pg.GradedProjectGroupID == addProjectGradeDto.GradedProjectGroupID);

            //herkes bir kez gradelemek?????
            if (projectGrade != null)
            {
                response.Data    = null;
                response.Message = "You have already graded this group ";
                response.Success = false;
                return(response);
            }

            ProjectGrade createdProjectGrade = new ProjectGrade
            {
                MaxGrade             = addProjectGradeDto.MaxGrade,
                Grade                = addProjectGradeDto.Grade,
                Description          = addProjectGradeDto.Comment,
                LastEdited           = addProjectGradeDto.LastEdited,
                GradingUser          = user,
                GradingUserId        = user.Id,
                GradedProjectGroup   = projectGroup,
                GradedProjectGroupID = projectGroup.Id,
            };

            var target = Path.Combine(_hostingEnvironment.ContentRootPath, string.Format("{0}/{1}/{2}/{3}/{4}",
                                                                                         "StaticFiles/ProjectGradeFiles", projectGroup.AffiliatedCourseId,
                                                                                         projectGroup.AffiliatedSection, projectGroup.Id, user.Id));

            Directory.CreateDirectory(target);
            if (addProjectGradeDto.File != null)
            {
                if (addProjectGradeDto.File.Length > 0)
                {
                    createdProjectGrade.HasFile = true;
                    string oldfile   = Directory.GetFiles(target).FirstOrDefault();
                    string extension = Path.GetExtension(addProjectGradeDto.File.FileName);
                    var    filePath  = Path.Combine(target, string.Format("{0}_Section{1}_Group{2}_{3}_GroupFeedback"
                                                                          , projectGroup.AffiliatedCourse.Name.Trim().Replace(" ", "_"), projectGroup.AffiliatedSection,
                                                                          projectGroup.Id, user.Name.Trim().Replace(" ", "_")) + extension);
                    createdProjectGrade.FilePath = filePath;
                    if (File.Exists(oldfile))
                    {
                        File.Delete(oldfile);
                    }
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        await addProjectGradeDto.File.CopyToAsync(stream);
                    }
                }
            }



            _context.ProjectGrades.Add(createdProjectGrade);
            await _context.SaveChangesAsync();

            projectGroup.ProjectGrades.Add(createdProjectGrade);

            response.Data    = addProjectGradeDto;
            response.Message = "You successfully entered project grade";
            response.Success = true;

            return(response);
        }