예제 #1
0
 internal void Initialize(ISummaryProvider provider)
 {
     _provider      = provider;
     txtNumber.Text = provider.ADNumber;
     dtpDate.Text   = provider.ADDate;
     CheckSaveable();
 }
        public ActionResult GetClass(int classId, int subjectId, string summaryProviderTypeName)
        {
            var summaryProviderType          = typeof(Program).Assembly.GetTypes().FirstOrDefault(t => t.Name == summaryProviderTypeName);
            ISummaryProvider summaryProvider = null;

            if (summaryProviderType != null)
            {
                summaryProvider = ActivatorUtilities.CreateInstance(serviceProvider, summaryProviderType) as ISummaryProvider;
            }

            var currentUser = loginService.GetCurrentLoggedInUser(HttpContext);

            var group = database.Groups
                        .Include(g => g.Users)
                        .Include(g => g.FormMaster)
                        .GetById(classId);
            var users = group.Users
                        .OrderBy(u => u.FullName)
                        .AsEnumerable()
                        .Select(u => new
            {
                Id         = u.Id,
                FullName   = u.FullName,
                LoginName  = u.LoginName,
                PlatformId = u.PlatformId,
                Summary    = summaryProvider?.GetSummary(u, database.Subjects.GetById(subjectId))
            });

            // Update history
            var historyEntries = database.TeacherClassHistory
                                 .Include(h => h.Teacher)
                                 .Include(h => h.Class)
                                 .Where(h => h.Teacher.Id == currentUser.Id && h.Class.Id == classId)
                                 .ToList();

            database.TeacherClassHistory.RemoveRange(historyEntries);
            database.TeacherClassHistory.Add(new TeacherClassHistory
            {
                Class   = database.Groups.GetById(classId),
                Teacher = currentUser
            });
            database.SaveChanges();

            return(Ok(new
            {
                Users = users,
                IsFormMaster = group.FormMaster?.Id == currentUser.Id,
                FirstAvailableSubjectId = currentUser.TaughtSubjects.FirstOrDefault()?.Id ?? -1
            }));
        }
예제 #3
0
 public static ISummaryProvider GetSummaryProvider()
 {
     Lock.EnterReadLock();
     try
     {
         {
             if (_provider == null)
             {
                 return new MockSummaryProvider();
                 if (Configuration.IsMock)
                     _provider = new MockSummaryProvider();
                 else
                     _provider = new SummaryProvider();
             }
         }
     }
     finally
     {
         Lock.ExitReadLock();
     }
     return _provider;
 }
예제 #4
0
        private void lstList_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstList.SelectedItems.Count > 0)
            {
                btnDelete.Enabled = true;
                btnAD.Enabled     = true;

                ListViewItem item  = lstList.SelectedItems[0];
                string       id    = item.Tag.ToString();
                DSResponse   dsrsp = QueryStudent.GetUpdateRecordBatch(id);

                listView.SuspendLayout();
                if (dsrsp.HasContent)
                {
                    DSXmlHelper helper = dsrsp.GetContent();
                    provider = new SummaryProvider(helper);

                    lblADCounter.Text = "【" + provider.Title + "】 各科人數統計";
                    lblADInfo.Text    = "【" + provider.Title + "】 核准文號";
                    buttonX1.Visible  = true;
                    buttonX2.Visible  = true;

                    XmlNode contentNode = helper.GetElement("UpdateRecordBatch/Content");
                    if (contentNode == null)
                    {
                        return;
                    }
                    source = (XmlElement)contentNode.FirstChild;

                    //處理看板資訊
                    StringBuilder builder = new StringBuilder("");
                    foreach (Department dept in provider.GetDepartments())
                    {
                        builder = builder.Append("◎").Append(dept.Name).Append(" ")
                                  .Append("男生 <font color='blue'>").Append(dept.Male).Append("</font> 人 ")
                                  .Append("女生 <font color='blue'>").Append(dept.Female).Append("</font> 人 ")
                                  .Append("(合計 <font color='blue'>").Append(dept.Total).Append("</font> 人)");

                        if (dept.Unknow > 0)
                        {
                            builder = builder.Append("<font color='red'>").Append(dept.Unknow)
                                      .Append("</font>人未填性別");
                        }
                        builder = builder.Append("<br/>");
                    }
                    lblListContent.Text = builder.ToString();
                    lblADName1.Text     = provider.Title;
                    lblADName2.Text     = provider.Title;
                    lblADName3.Text     = provider.Title;

                    // 處理核准日期與文號
                    string adString = "";
                    if (!string.IsNullOrEmpty(provider.ADNumber))
                    {
                        adString += "核准文號 <font color='red'>" + provider.ADNumber + "</font> ";
                        adString += "核准日期 <font color='red'>" + provider.ADDate + "</font>";
                    }
                    else
                    {
                        adString = "<font color='red'>未登錄</font>";
                    }
                    lblAD.Text = adString;

                    //處理ListView呈現資料
                    listView.Clear();

                    foreach (IEntryFormat format in provider.GetEntities())
                    {
                        // 若無群組則先加上群組
                        if (listView.Groups[format.Group] == null)
                        {
                            listView.Groups.Add(format.Group, format.Group);
                        }

                        // 若沒有欄名則先加上欄名
                        if (listView.Columns.Count == 0)
                        {
                            foreach (string column in format.DisplayColumns.Keys)
                            {
                                listView.Columns.Add(column, format.DisplayColumns[column].Width);
                            }
                        }

                        // 欄位都有了則依據欄位填入其屬性值
                        ListViewItem rowItem = null;
                        for (int i = 0; i < listView.Columns.Count; i++)
                        {
                            string columnName = listView.Columns[i].Text;
                            string value      = format.DisplayColumns[columnName].Value;
                            if (i == 0)
                            {
                                rowItem = new ListViewItem(value);
                            }
                            else
                            {
                                rowItem.SubItems.Add(value);
                            }
                        }
                        rowItem.Tag   = format;
                        rowItem.Group = listView.Groups[format.Group];
                        listView.Items.Add(rowItem);
                    }
                }
                listView.ResumeLayout();
            }
            else
            {
                btnDelete.Enabled = false;
                btnAD.Enabled     = false;
            }

            this.itemPanel1.RecalcLayout();
            //this.itemPanel1.Refresh();
        }
예제 #5
0
 public WeatherForecastController(ILogger <WeatherForecastController> logger, ISummaryProvider summaryProvider)
 {
     _logger = logger;
     this.summaryProvider = summaryProvider;
 }