Exemplo n.º 1
0
        public SubjectList ListSubject(string siteId)
        {
            //HACK: mock user login
            //var siteId = "01";
            //var siteId = siteId;

            //ListActivedSubject
            var _activateds = repoForApprove.ListActivatedSubject(siteId);

            //ListSubject
            var _subjects = repoForApprove.ListSubject(_activateds.Select(aSub => aSub.SubjectId)?.ToList());

            //ListOccupationGroup
            var _occupationGroups = repoForApprove.ListOccupationGroup(siteId);

            var subjectGroupsBack  = _occupationGroups?.SelectMany(occ => occ.SubjectGroups);
            var subjectGroupsFront = _occupationGroups?.SelectMany(occ => occ.SubjectGroups?.Select(sg => new SubjectGroup
            {
                id           = sg._id,
                Name         = sg.Name,
                OccupationId = occ._id,
            }));

            //ConvertTo SubjectList
            var subjectList = new SubjectList()
            {
                SubjList = _activateds.Select(aSub =>
                {
                    var _subject = _subjects.FirstOrDefault(sub => sub.SubjectCode == aSub.SubjectCode && sub.ContentLanguage == aSub.ContentLanguage);
                    return(new SubjectDetail
                    {
                        id = aSub.SubjectId,
                        SubjectCode = aSub.SubjectCode,
                        SubjectName = _subject?.SubjectName,
                        ContentLanguage = _subject?.ContentLanguage,
                        ExamSuiteCount = _subject?.ExamSuites?.Count() ?? 0,
                        QuestionCount = _subject?.ExamSuites?.SelectMany(es => es.QuestionIds ?? new List <string>())?.Count() ?? 0,
                        Version = _subject?.Version,
                        IsDisabled = aSub?.DisabledDateTime.HasValue ?? false,
                        //SubjectGroupId = subjectGroupsBack?.FirstOrDefault(sg => sg.Subjects?.Any(s => s.Code == aSub.SubjectCode) ?? false)?._id,
                        SubjectGroupId = subjectGroupsBack?.FirstOrDefault(sg => sg.SubjectCodes?.Any(scode => scode == aSub.SubjectCode) ?? false)?._id,
                    });
                }),

                Occupations = _occupationGroups?.Select(occ => new Occupation
                {
                    id   = occ._id,
                    Name = occ.Name,
                }),
                SubjectGroups = subjectGroupsFront,
            };
            var lang = _activateds.Select(x => new LanguageSource {
                SubjectCode = x.SubjectCode, Detail = x.ContentText, Code = x.ContentLanguage
            });
            List <VoiceSource> vs = new List <VoiceSource>();

            foreach (var item in _subjects)
            {
                foreach (var vlang in item.VoiceLanguages)
                {
                    vs.Add(new VoiceSource {
                        SubjectCode = item.SubjectCode, Code = vlang.LanguageCode, Detail = vlang.Language
                    });
                }
            }
            subjectList.LanguageSources = lang;
            subjectList.VoiceSources    = vs;
            return(subjectList);


            ////ConvertTo SubjectList
            //string conString = "User Id=c##dsd;Password=1q2w3e4r;" +
            //                   "Data Source=localhost:1521/db;";
            //DataTable dt = new DataTable();
            //DataSet ds = new DataSet();
            //OracleCommand cmd = new OracleCommand();
            //using (OracleConnection objConn = new OracleConnection(conString))
            //{
            //    OracleDataAdapter da = new OracleDataAdapter();
            //    cmd.Connection = objConn;
            //    cmd.InitialLONGFetchSize = 1000;
            //    cmd.CommandText = "spGetSubjectList";
            //    cmd.CommandType = CommandType.StoredProcedure;
            //    OracleParameter oraP = new OracleParameter();
            //    oraP.OracleDbType = OracleDbType.RefCursor;
            //    oraP.Direction = System.Data.ParameterDirection.Output;
            //    cmd.Parameters.Add(oraP);

            //    da.SelectCommand = cmd;

            //    da.Fill(ds);
            //    dt = ds.Tables[0];

            //    int i = 0;
            //    var subjectList = new SubjectList()
            //    {
            //        SubjList = _activateds.Select(aSub =>
            //        {
            //            i++;
            //            var _subject = _subjects.FirstOrDefault(sub => sub.SubjectCode == aSub.SubjectCode && sub.ContentLanguage == aSub.ContentLanguage);
            //            return new SubjectDetail
            //            {
            //            //id = aSub.SubjectId,
            //            //SubjectCode = aSub.SubjectCode,
            //            ////SubjectName = _subject?.SubjectName + "  " + dt.Rows[i]["name"].ToString(),
            //            //SubjectName = dt.Rows[i]["name"].ToString(),
            //            //ContentLanguage = _subject?.ContentLanguage,
            //            //ExamSuiteCount = _subject?.ExamSuites?.Count() ?? 0,
            //            //QuestionCount = _subject?.ExamSuites?.SelectMany(es => es.QuestionIds ?? new List<string>())?.Count() ?? 0,
            //            //Version = _subject?.Version,
            //            //IsDisabled = aSub?.DisabledDateTime.HasValue ?? false,
            //            ////SubjectGroupId = subjectGroupsBack?.FirstOrDefault(sg => sg.Subjects?.Any(s => s.Code == aSub.SubjectCode) ?? false)?._id,
            //            //SubjectGroupId = subjectGroupsBack?.FirstOrDefault(sg => sg.SubjectCodes?.Any(scode => scode == aSub.SubjectCode) ?? false)?._id,

            //            id = aSub.SubjectId,
            //                SubjectCode = dt.Rows[i]["licensetype"].ToString(),
            //                SubjectName = dt.Rows[i]["name"].ToString(),
            //                ContentLanguage = dt.Rows[i]["language"].ToString(),
            //                ExamSuiteCount = Int32.Parse(dt.Rows[i]["quantity"].ToString()),
            //                QuestionCount = Int32.Parse(dt.Rows[i]["questioncount"].ToString()),
            //                Version = dt.Rows[i]["version"].ToString(),
            //                IsDisabled = aSub?.DisabledDateTime.HasValue ?? false,
            //            //SubjectGroupId = subjectGroupsBack?.FirstOrDefault(sg => sg.Subjects?.Any(s => s.Code == aSub.SubjectCode) ?? false)?._id,
            //            SubjectGroupId = subjectGroupsBack?.FirstOrDefault(sg => sg.SubjectCodes?.Any(scode => scode == aSub.SubjectCode) ?? false)?._id,

            //            };
            //        }),

            //        Occupations = _occupationGroups?.Select(occ => new Occupation
            //        {
            //            id = occ._id,
            //            Name = occ.Name,
            //        }),
            //        SubjectGroups = subjectGroupsFront,
            //    };
            //    var lang = _activateds.Select(x => new LanguageSource { SubjectCode = x.SubjectCode, Detail = x.ContentText, Code = x.ContentLanguage });
            //    List<VoiceSource> vs = new List<VoiceSource>();
            //    foreach (var item in _subjects)
            //    {
            //        foreach (var vlang in item.VoiceLanguages)
            //        {
            //            vs.Add(new VoiceSource { SubjectCode = item.SubjectCode, Code = vlang.LanguageCode, Detail = vlang.Language });
            //        }
            //    }
            //    subjectList.LanguageSources = lang;
            //    subjectList.VoiceSources = vs;

            //    return subjectList;
            //}
        }