コード例 #1
0
        /// <summary>
        /// NOT deletes pattern itself ------------ UPDATES its Name and Description
        /// IF IsTestActive - deletes prev tests and adds new
        /// IF IsTestActive - deletes diagram and adds new
        /// </summary>
        public CRUDResult Put(CRUDPattern data)
        {
            var pattern = _cx.Patterns.Find(data.Pattern.Id);

            if (pattern == null)
            {
                return(new CRUDResult()
                {
                    IsSuccess = false,
                    Message = "Pattern not found"
                });
            }

            try
            {
                if (data.IsTestActive)
                {
                    var result = _DeleteTests(pattern);

                    if (!result.IsSuccess)
                    {
                        throw new Exception(result.Message);
                    }

                    return(_AddTests(data));
                }
                else
                {
                    var result = _DeleteDiagramSubjects(pattern);

                    if (!result.IsSuccess)
                    {
                        throw new Exception(result.Message);
                    }

                    //Update pattern
                    pattern.Name = data.Pattern.Name;

                    pattern.description = data.Pattern.description;

                    _cx.SaveChanges();
                    //---

                    return(_AddDiagram(data, new Entity_View <Pattern, PatternView>()
                    {
                        Entity = pattern,
                        View = data.Pattern
                    }));
                }
            }
            catch (Exception e)
            {
                return(new CRUDResult()
                {
                    IsSuccess = false,
                    Message = e.Message
                });
            }
        }
コード例 #2
0
        /// <summary>
        /// NOT creates new pattern itself
        /// Add new test objects
        /// </summary>
        private CRUDResult _AddTests(CRUDPattern data)
        {
            try
            {
                var patternEV = new Entity_View <Pattern, PatternView>()
                {
                    View   = data.Pattern,
                    Entity = _cx.Patterns.Find(data.Pattern.Id)
                };

                var questionsEV = _AddToDatabase <Question, QuestionView, Pattern, PatternView>
                                      (data.Tests.Questions.Select(x => x.Question).ToList(), _GetIdProperties <QuestionView>(),
                                      new List <Entity_View <Pattern, PatternView> >()
                {
                    patternEV
                });

                var answerView = new List <AnswerView>();

                foreach (var item in data.Tests.Questions)
                {
                    answerView.AddRange(item.Variants);
                }

                var answersEV = _AddToDatabase <Answer, AnswerView, Question, QuestionView>
                                    (answerView, _GetIdProperties <AnswerView>(), questionsEV);
            }
            catch (Exception e)
            {
                return(new CRUDResult()
                {
                    IsSuccess = false,
                    Message = e.Message
                });
            }

            return(new CRUDResult()
            {
                IsSuccess = true,
                Message = "OK",
                Pattern = Mapper.Map <Pattern, PatternView>
                              (_cx.Patterns.Where(x => x.Name == data.Pattern.Name).Single())
            });
        }
コード例 #3
0
        //-------------------------------------------------------------------------------
        //-----------------------------------Interface-----------------------------------
        //-------------------------------------------------------------------------------

        public CRUDResult Post(CRUDPattern data)
        {
            //sequence
            //1 - pattern, 2 - subject, 3 - (sreference, sproperties, smethods), 4 - mparaterers

            try
            {
                var patternEV = _Add <PatternView, Pattern>(data.Pattern);

                _cx.SaveChanges();

                //data.Pattern.Id = patternEV.Entity.Id;

                var result = _AddDiagram(data, patternEV);

                if (!result.IsSuccess)
                {
                    throw new Exception(result.Message);
                }
            }
            catch (Exception e)
            {
                return(new CRUDResult()
                {
                    IsSuccess = false,
                    Message = e.Message
                });
            }

            return(new CRUDResult()
            {
                IsSuccess = true,
                Message = "OK",
                Pattern = Mapper.Map <Pattern, PatternView>
                              (_cx.Patterns.Where(x => x.Name == data.Pattern.Name).Single())
            });
        }
コード例 #4
0
 public CRUDResult Put([FromBody] CRUDPattern pattern)
 {
     return(_service.Put(pattern));
 }
コード例 #5
0
        /// <summary>
        /// NOT creates new pattern itself
        /// Adds new diagram objects
        /// </summary>
        private CRUDResult _AddDiagram(CRUDPattern data, Entity_View <Pattern, PatternView> patternEV)
        {
            try
            {
                //var patternEV = new Entity_View<Pattern, PatternView>()
                //{
                //    View = data.Pattern,
                //    Entity = _cx.Patterns.Find(data.Pattern.Id)
                //};

                var subjectsEV = _AddToDatabase <Subject, SubjectView, Pattern, PatternView>
                                     (data.Diagram.Subjects, _GetIdProperties <SubjectView>(),
                                     new List <Entity_View <Pattern, PatternView> >()
                {
                    patternEV
                }).ToList();

                subjectsEV.AddRange(_GetBasic());

                var referencesEV = _AddToDatabase <SubjectReference, SubjectReferenceView, Subject, SubjectView>
                                       (data.Diagram.SubjectReferences, _GetIdProperties <SubjectReferenceView>(), subjectsEV);

                var propertiesEV = _AddToDatabase <SubjectProperty, SubjectPropertyView, Subject, SubjectView>
                                       (data.Diagram.SubjectProperties, _GetIdProperties <SubjectPropertyView>(), subjectsEV);

                var methodsEV = _AddToDatabase <SubjectMethod, SubjectMethodView, Subject, SubjectView>
                                    (data.Diagram.SubjectMethods, _GetIdProperties <SubjectMethodView>(), subjectsEV);

                //------parameters set property "type_id"---------------

                var paramProperties = _GetIdProperties <MethodParameterView>().ToList();

                var subjectProperty = paramProperties.Where(x => x.Name == "type_id").ToList();

                foreach (var item in data.Diagram.MethodParameters)
                {
                    _SetIds(item, subjectProperty, subjectsEV);
                }

                var methodProperty = paramProperties.Where(x => x.Name == "method_id").ToList();

                //-----------------------------------------------------

                var parametersEV = _AddToDatabase <MethodParameter, MethodParameterView, SubjectMethod, SubjectMethodView>
                                       (data.Diagram.MethodParameters, methodProperty, methodsEV);

                _cx.SaveChanges();
            }
            catch (Exception e)
            {
                return(new CRUDResult()
                {
                    IsSuccess = false,
                    Message = e.Message
                });
            }

            return(new CRUDResult()
            {
                IsSuccess = true,
                Message = "OK",
                Pattern = Mapper.Map <Pattern, PatternView>
                              (_cx.Patterns.Where(x => x.Name == data.Pattern.Name).Single())
            });
        }