예제 #1
0
        public async Task <ActionResult <IEnumerable <LearnerDto> > > GetLearners()
        {
            List <LearnerDto> learnersDto = new List <LearnerDto>();
            var learners = await _context.Learners
                           .Include(l => l.LearnerGroup.Group)
                           .Include(l => l.LearnerCourses)
                           .Include(l => l.User)
                           .Include(l => l.User.Type)
                           .Include(l => l.User.Organisation)
                           .ToListAsync();

            // if (learners == null) return null;


            foreach (var learner in learners)
            {
                var learnerDto = new LearnerDto
                {
                    UserId    = learner.User.Id,
                    LearnerId = learner.LearnerId,
                    Username  = learner.User.Username,
                    Group     = learner.LearnerGroup == null ? null :
                                new GroupDto {
                        Id   = learner.LearnerGroup.Group.Id,
                        Name = learner.LearnerGroup.Group.Name
                    },
                    Firstname    = learner.User.Firstname,
                    Lastname     = learner.User.Lastname,
                    Organisation = learner.User.Organisation
                };

                foreach (var learnerCourse in learner.LearnerCourses)
                {
                    var course = await _context.Courses.FirstOrDefaultAsync(c => c.Id == learnerCourse.CourseId);

                    learnerDto.Courses.Add(new CourseDto {
                        Id       = course.Id,
                        Name     = course.Name,
                        IconPath = course.IconPath
                    });
                }

                learnersDto.Add(learnerDto);
            }
            return(learnersDto);
        }
예제 #2
0
        public async Task <IActionResult> ImportLearners(IFormFile file)
        {
            var fileExtension = Path.GetExtension(file.FileName).ToUpper();

            if (fileExtension != ".XLSX")
            {
                return(BadRequest("File type not supported, please upload Excel Package"));
            }

            if (file.Length <= 0)
            {
                return(BadRequest("Invalid File"));
            }
            using (var package = new ExcelPackage(file.OpenReadStream()))
            {
                var workbook  = package.Workbook;
                var worksheet = workbook.Worksheets.First();
                var rowStart  = worksheet.Dimension.Start.Row;
                var rowEnd    = worksheet.Dimension.End.Row;
                var columnEnd = worksheet.Dimension.End.Column;
                var columns   = new List <string>();

                for (int col = 1; col <= columnEnd; col++)
                {
                    var columnName = Convert.ToString(worksheet.Cells[rowStart, col].Value);
                    if (columns.Contains(columnName))
                    {
                        return(BadRequest("Duplicate column name"));
                    }
                    columns.Add(columnName);
                }
                var dataLearners = new List <LearnerDto>();
                for (int row = rowStart + 1; row <= rowEnd; row++)
                {
                    var learner = new LearnerDto()
                    {
                        Email    = worksheet.Cells[row, 1].Value.ToString(),
                        FullName = worksheet.Cells[row, 1].Value.ToString(),
                        Password = worksheet.Cells[row, 1].Value.ToString()
                    };
                    dataLearners.Add(learner);
                }
                return(Ok(dataLearners.Count));
            }
        }