Skip to content
Snippets Groups Projects

bedelia

Merged Lucca Santangelo Dodera requested to merge feature/bedelia into develop
37 files
+ 1323
3
Compare changes
  • Side-by-side
  • Inline
Files
37
+ 151
0
using Bedelia.Dtos;
using Bedelia.EF;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Bedelia.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class CoursesController : ControllerBase
{
private readonly BedeliaContext _context;
public CoursesController(BedeliaContext context)
{
_context = context;
}
[HttpGet]
public async Task<IActionResult> Get()
{
var courses = await _context.Courses.ToListAsync();
return Ok(courses);
}
[HttpGet("{name}")]
public async Task<IActionResult> Get(string name)
{
var course = await _context.Courses.FirstOrDefaultAsync(x => x.Name == name);
if (course == null)
{
return BadRequest(string.Format("el curso con nombre {0} no existe", name));
}
return Ok(course);
}
[HttpPost]
public async Task<IActionResult> Post([FromBody] string courseName)
{
var course = new Course()
{
Name = courseName
};
_context.Courses.Add(course);
await _context.SaveChangesAsync();
return Ok(course);
}
[HttpPost("loadData")]
public async Task<IActionResult> Post([FromBody] List<string> courseNames)
{
var dbCourses = await _context.Courses
.Where(x=>courseNames.Contains(x.Name))
.ToListAsync();
var courses = new List<Course>();
foreach (var courseName in courseNames)
{
var dbCourse = dbCourses.FirstOrDefault(x => x.Name == courseName);
if (dbCourse == null)
{
courses.Add(new Course()
{
Name = courseName
});
}
}
_context.Courses.AddRange(courses);
await _context.SaveChangesAsync();
return Ok(courses);
}
[HttpPut("{id}")]
public async Task<IActionResult> Put(int id, [FromBody] Course course)
{
var dbCourse = await _context.Courses.FirstOrDefaultAsync(x => x.Id == id);
if (dbCourse == null)
{
return BadRequest(string.Format("el curso con id {0} no existe en bedelia", id));
}
dbCourse.Name = course.Name;
await _context.SaveChangesAsync();
return Ok(dbCourse);
}
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id)
{
var course = await _context.Courses.FirstOrDefaultAsync(x => x.Id == id);
_context.Courses.Remove(course);
await _context.SaveChangesAsync();
return Ok();
}
[HttpPost("closeRecord")]
public async Task<IActionResult> CloseRecord(CloseRecordDto closeRecord)
{
var now = DateTime.Now;
var course = await _context.Courses
.FirstOrDefaultAsync(x => x.Name == closeRecord.CourseName);
if (course == null)
{
return BadRequest(string.Format(@"No existe el curso con nombre {0} en bedelia", closeRecord.CourseName));
}
var userIdentityCards = closeRecord.UserGrades.Select(x => x.IdentityCard);
var users = await _context.Users
.Where(x => userIdentityCards.Contains(x.IdentityCard))
.ToListAsync();
var userCourses = new List<UserCourse>();
foreach (var user in users)
{
var grade = closeRecord.UserGrades
.Where(x => x.IdentityCard == user.IdentityCard)
.Select(x => x.Grade)
.FirstOrDefault();
userCourses.Add(new UserCourse()
{
CourseId = course.Id,
UserId = user.Id,
Grade = grade,
GradeDate = now
});
}
_context.UserCourses.AddRange(userCourses);
await _context.SaveChangesAsync();
return Ok();
}
}
}
Loading