Beispiel #1
0
 public void Delete(TestBindModel model)
 {
     using (var context = new DataBase())
     {
         using (var transaction = context.Database.BeginTransaction())
         {
             try
             {
                 // удаяем записи по компонентам при удалении изделия
                 context.TestsQuestions.RemoveRange(context.TestsQuestions.Where(rec =>
                                                                                 rec.TestId == model.Id));
                 Tests element = context.Tests.FirstOrDefault(rec => rec.Id
                                                              == model.Id);
                 if (element != null)
                 {
                     context.Tests.Remove(element);
                     context.SaveChanges();
                 }
                 else
                 {
                     throw new Exception("Элемент не найден");
                 }
                 transaction.Commit();
             }
             catch (Exception)
             {
                 transaction.Rollback();
                 throw;
             }
         }
     }
 }
Beispiel #2
0
 public List <Test> Read(TestBindModel model)
 {
     using (var context = new DataBase())
     {
         return(context.Tests
                .Where(rec => model == null || rec.Id == model.Id)
                .ToList()
                .Select(rec => new Test
         {
             Id = rec.Id,
             testName = rec.testName,
             testQuestions = context.TestsQuestions
                             .Include(recPC => recPC.questions)
                             .Where(recPC => recPC.TestId == rec.Id)
                             .ToDictionary(recPC => recPC.QuestionId, recPC =>
                                           (recPC.questName, recPC.answers, recPC.rightNum))
         })
Beispiel #3
0
        public void CreateOrUpdate(TestBindModel model)
        {
            using (var context = new DataBase())
            {
                using (var transaction = context.Database.BeginTransaction()) {
                    try
                    {
                        Tests element = context.Tests.FirstOrDefault(rec =>
                                                                     rec.testName == model.testName && rec.Id != model.Id);
                        if (element != null)
                        {
                            throw new Exception("Уже есть компонент с таким названием");
                        }
                        if (model.Id.HasValue)
                        {
                            element = context.Tests.FirstOrDefault(rec => rec.Id ==
                                                                   model.Id);
                            if (element == null)
                            {
                                throw new Exception("Элемент не найден");
                            }
                        }
                        else
                        {
                            element = new Tests();
                            context.Tests.Add(element);
                        }
                        element.testName = model.testName;
                        context.SaveChanges();
                        if (model.Id.HasValue)
                        {
                            var Testquestions = context.TestsQuestions.Where(rec
                                                                             => rec.TestId == model.Id.Value).ToList();
                            // удалили те, которых нет в модели
                            context.TestsQuestions.RemoveRange(Testquestions.Where(rec =>
                                                                                   !model.testQuestions.ContainsKey(rec.QuestionId)).ToList());
                            context.SaveChanges();
                            // обновили количество у существующих записей
                            foreach (var updateQuestions in Testquestions)
                            {
                                model.testQuestions.Remove(updateQuestions.QuestionId);
                            }
                            context.SaveChanges();
                        }

                        // добавили новые
                        foreach (var questions in model.testQuestions)
                        {
                            context.TestsQuestions.Add(new TestQuestions
                            {
                                TestId     = element.Id,
                                QuestionId = questions.Key,
                                questName  = questions.Value.Item1,
                                answers    = questions.Value.Item2,
                                rightNum   = questions.Value.Item3
                            });
                            context.SaveChanges();
                        }
                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
Beispiel #4
0
 public IHttpActionResult CreateOrUpdate(TestBindModel model)
 {
     return(Ok(appService.CreateOrUpdate(model)));
 }
        public int CreateOrUpdate(TestBindModel model)
        {
            var entity = model.ToEntity();

            return(service.CreateOrUpdate(entity, true));
        }