201 lines
5.8 KiB
C#
201 lines
5.8 KiB
C#
using AutoMapper;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using System.Web.Mvc;
|
|
using WebApplication5.Models;
|
|
using WebApplication5.Templates;
|
|
using System.Threading;
|
|
using System.Globalization;
|
|
using System.Diagnostics;
|
|
|
|
namespace WebApplication5.Controllers
|
|
{
|
|
public class CRUDController : Controller
|
|
{
|
|
private readonly IMapper _mapper;
|
|
private TestsDbContext _db;
|
|
|
|
public CRUDController(IServiceCollection serviceDescriptors)
|
|
{
|
|
}
|
|
|
|
public CRUDController(TestsDbContext db, IMapper mapper)
|
|
{
|
|
_mapper = mapper;
|
|
_db = db;
|
|
}
|
|
public ActionResult Index()
|
|
{
|
|
return View();
|
|
}
|
|
|
|
public JsonResult GetCategories()
|
|
{
|
|
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
|
|
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
|
|
var result = _mapper.ProjectTo<CategoryViewModel>(_db.Categories);
|
|
return Json(result.ToList(),JsonRequestBehavior.AllowGet);
|
|
}
|
|
public JsonResult GetQuestions(int categoryId)
|
|
{
|
|
var result = _mapper.ProjectTo<QuestionViewModel>(_db.Questions.Where(q => q.CategoryId == categoryId));
|
|
return Json(result.ToList());
|
|
}
|
|
|
|
public ActionResult PutCategory(CategoryViewModel category)
|
|
{
|
|
try
|
|
{
|
|
if (!category.Id.HasValue)
|
|
{
|
|
try
|
|
{
|
|
var cat = _mapper.Map<Category>(category);
|
|
_db.Categories.Add(cat);
|
|
_db.SaveChanges();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
var i = ex;
|
|
try
|
|
{
|
|
var xy = new Category()
|
|
{
|
|
Id = 1,
|
|
Name = "name"
|
|
};
|
|
_db.Categories.Add(xy);
|
|
_db.SaveChanges();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
var x = 0;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//_db.Categories.(_mapper.Map<Category>(category));
|
|
}
|
|
_db.SaveChanges();
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
var x = 1;
|
|
}
|
|
return View();
|
|
}
|
|
public ActionResult PutQuestion(QuestionViewModel question, int categoryId)
|
|
{
|
|
var q = _mapper.Map<Question>(question);
|
|
var c = _db.Categories.FirstOrDefault(cat => cat.Id == categoryId);
|
|
|
|
if (c == null)
|
|
return null;
|
|
|
|
if (question.Id == 0)
|
|
{
|
|
_db.Questions.Add(q);
|
|
c.Questions.Add(q);
|
|
}
|
|
else
|
|
{
|
|
//_db.Questions.Update(q);
|
|
|
|
}
|
|
if (question.Answers.Any())
|
|
{
|
|
var allAns = question.Answers.Select(an => _mapper.Map<Answer>(an)).ToList();
|
|
var existingAns = _db.Answers.Where(a => allAns.Any(w => w.Id == a.Id));
|
|
var newAns = allAns.Except(existingAns).ToList();
|
|
|
|
foreach (var a in newAns)
|
|
{
|
|
_db.Answers.Add(a);
|
|
q.Answers.Add(a);
|
|
}
|
|
foreach (var a in existingAns)
|
|
{
|
|
//_db.Answers.Update(a);
|
|
}
|
|
}
|
|
|
|
_db.SaveChanges();
|
|
|
|
return View();
|
|
}
|
|
|
|
public ActionResult DeleteCategory(int categoryId, bool deleteQuestions)
|
|
{
|
|
var c = _db.Categories.FirstOrDefault(cat => cat.Id == categoryId);
|
|
|
|
if (c == null)
|
|
return null;
|
|
|
|
foreach (var q in c.Questions)
|
|
{
|
|
if (deleteQuestions)
|
|
_db.Questions.Remove(q);
|
|
else
|
|
q.CategoryId = 1;//Unknown, pre initialized in the DB.
|
|
}
|
|
|
|
_db.Categories.Remove(c);
|
|
_db.SaveChanges();
|
|
|
|
return View();
|
|
}
|
|
public ActionResult DeleteQuestion(int questionId)
|
|
{
|
|
var q = _db.Questions.FirstOrDefault(cat => cat.Id == questionId);
|
|
|
|
if (q == null)
|
|
return null;
|
|
|
|
foreach (var a in q.Answers)
|
|
{
|
|
_db.Answers.Remove(a);
|
|
}
|
|
|
|
_db.Questions.Remove(q);
|
|
_db.SaveChanges();
|
|
|
|
return View();
|
|
}
|
|
|
|
|
|
public ActionResult GeneratePDF(TemplatesOrder templatesToGenerate)
|
|
{
|
|
var catq1 = new TemplateViewModel()
|
|
{
|
|
CategoryId = 1,
|
|
NumberOfQuestions = 3,
|
|
QuestionsIds = new List<int>(){ 1, 2, 3 }
|
|
};
|
|
var catq2 = new TemplateViewModel()
|
|
{
|
|
CategoryId = 2,
|
|
QuestionsIds = new List<int>(),
|
|
NumberOfQuestions = 2
|
|
};
|
|
templatesToGenerate = new TemplatesOrder()
|
|
{
|
|
TestName = "Wielki Test1",
|
|
NumberOfExamples = 5,
|
|
Categories = new List<TemplateViewModel>() { catq1, catq2 }
|
|
};
|
|
|
|
var x = new CheckCards(_db);
|
|
x.CheckFolder("");
|
|
|
|
|
|
var generator = new TemplateGenerator(_db, templatesToGenerate);
|
|
generator.ProcessOrder();
|
|
return View();
|
|
}
|
|
}
|
|
}
|