public IActionResult Load(long?ID, long?LineOfBusniess, long?SubLineOfBusniess, long?langId)
        {
            GetSubjectTypies operation = new GetSubjectTypies()
            {
                ID = ID, LineOfBusniessID = LineOfBusniess, SubLineOfBusniessID = SubLineOfBusniess
            };

            if (langId.HasValue)
            {
                operation.LangID = langId;
            }
            else
            {
                operation.LangID = 1;
            }

            var result = operation.QueryAsync().Result;

            if (result is ValidationsOutput)
            {
                return(Ok(new ApiResult <List <ValidationItem> >()
                {
                    Data = ((ValidationsOutput)result).Errors
                }));
            }
            else
            {
                return(Ok((List <SubjectType>)result));
            }
        }
        public IActionResult LoadSubjectType(long?langId, long?productDetailID, long?ProductID, long?LineOfBusiness, long?SubLine)
        {
            GetSubjectTypies        subjectType      = new GetSubjectTypies();
            GetProductSubjectTypies prodSubjectTypes = new GetProductSubjectTypies();

            prodSubjectTypes.ProductID        = ProductID;
            prodSubjectTypes.ProductDetailsID = productDetailID;

            prodSubjectTypes.LineOfBusniess = LineOfBusiness;
            if (langId.HasValue)
            {
                subjectType.LangID      = langId;
                prodSubjectTypes.LangID = langId;
            }
            else
            {
                subjectType.LangID      = 1;
                prodSubjectTypes.LangID = 1;
            }



            List <ProductSubjectType> RelatedSubject   = new List <ProductSubjectType>();
            List <SubjectType>        UnRelatedSubject = new List <SubjectType>();



            subjectType.LineOfBusniessID = LineOfBusiness;
            var subject                   = subjectType.QueryAsync().Result;
            var SubjectsTypes             = (List <SubjectType>)subject;
            var productSubjectTypesResult = (List <ProductSubjectType>)prodSubjectTypes.QueryAsync().Result;

            if (productSubjectTypesResult.Count > 0)
            {
                RelatedSubject   = productSubjectTypesResult.Where(p => SubjectsTypes.Any(s => s.ID == p.SubjectTypeID && (s.SubLineOfBusniessID == SubLine || s.SubLineOfBusniessID == null))).ToList();
                UnRelatedSubject = SubjectsTypes.Where(s => productSubjectTypesResult.Any(p => p.SubjectTypeID != s.ID &&
                                                                                          (s.SubLineOfBusniessID == SubLine || s.SubLineOfBusniessID == null))).ToList();

                UnRelatedSubject = UnRelatedSubject.Where(un => !RelatedSubject.Exists(re => un.ID == re.SubjectTypeID)).ToList();
            }
            else
            {
                UnRelatedSubject = SubjectsTypes.Where(s => s.SubLineOfBusniessID == SubLine || s.SubLineOfBusniessID == null).ToList();
            }



            if (subject is ValidationsOutput)
            {
                return(Ok(new ApiResult <List <ValidationItem> >()
                {
                    Data = ((ValidationsOutput)subject).Errors
                }));
            }
            else
            {
                return(Ok(new { RelatedSubject, UnRelatedSubject }));
            }
        }