// To protect from overposting attacks, enable the specific properties you want to bind to, for
        // more details, see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            try
            {
                using (WebDBManager webm = new WebDBManager(Comm.SERVER_URL))
                {
                    bool result = await webm.Update(Project, "Project", Project.Id);

                    if (!result)
                    {
                        return(StatusCode(400, Project));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return(StatusCode(400, ex));
            }

            return(RedirectToPage("./Index"));
        }
        public async Task <IActionResult> OnGetAsync(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            try
            {
                using (WebDBManager webm = new WebDBManager(Comm.SERVER_URL))
                {
                    Project = await webm.ReadProjectAsync(id.Value);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                return(NotFound());
            }

            if (Project == null)
            {
                return(NotFound());
            }
            return(Page());
        }
        public async Task OnGetAsync(string sortOrder)
        {
            NameSort = string.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            DateSort = sortOrder == "Date" ? "date_desc" : "Date";

            IEnumerable <PeriodReport> periods;

            using (WebDBManager webm = new WebDBManager(Comm.SERVER_URL))
            {
                try
                {
                    periods = await webm.ReadAllPeriodReportAsync();

                    // 初始化分類
                    HashSet <string> projectNames = new HashSet <string>();
                    var projects = await webm.ReadAllProjectsAsync();

                    foreach (var p in projects)
                    {
                        projectNames.Add(p.ProjectName);
                    }
                    // 這些沒用
                    projectNames.Remove(string.Empty);
                    projectNames.Remove("WorlCard 8.6.2");
                    Genres = new SelectList(projectNames.ToList().OrderBy(x => x));
                }
                catch (Exception ex)
                {
                    Console.Write(ex);
                    periods = new List <PeriodReport>();
                }
            }

            // 分類
            if (!string.IsNullOrEmpty(SelectedProject))
            {
                periods = periods.Where(x => x.ProjectName == SelectedProject);
            }

            switch (sortOrder)
            {
            case "Date":
                Periods = periods.OrderBy(s => s.Date).ToList();
                break;

            case "date_desc":
                Periods = periods.OrderByDescending(s => s.Date).ToList();
                break;

            case "name_desc":
                Periods = periods.OrderByDescending(s => s.ProjectName).ToList();
                break;

            default:
                // 預設是ProjectName排序
                Periods = periods.ToList();
                break;
            }
        }
示例#4
0
        public async Task OnGetAsync()
        {
            // calculate date
            DayOfWeek dayOfWeek  = System.Globalization.CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(DateTime.Today);
            int       shiftedDay = (int)dayOfWeek;
            DateTime  startDay   = DateTime.Today.AddDays(-shiftedDay);
            DateTime  endDay     = startDay.AddDays(7);

            IEnumerable <PeriodReport> alist;

            using (WebDBManager wdManager = new WebDBManager(Comm.SERVER_URL))
            {
                alist = await wdManager.ReadPeriodReportAsync(startDay, endDay);
            }

            WeeklyReport = new List <AccumulatedReport>();

            string pattern = @"^修正 *(M|m)antis *上的問題(:|:)";
            Regex  regex   = new Regex(pattern);

            foreach (PeriodReport drm in alist)
            {
                AccumulatedReport ar = WeeklyReport.FirstOrDefault(x => x.ProjectId == drm.ProjectID);
                if (ar == null)
                {
                    ar = new AccumulatedReport()
                    {
                        ProjectName = drm.ProjectName, ProjectId = drm.ProjectID, ProjectVersion = drm.Version
                    };
                    WeeklyReport.Add(ar);
                }

                // check if line contains mantis number
                var match = regex.Match(drm.Message);
                if (match.Success)
                {
                    // add mantis number to project
                    string   mantisLine  = drm.Message.Substring(match.Length, drm.Message.Length - match.Length);
                    string[] mantisItems = mantisLine.Split('、');
                    foreach (string item in mantisItems)
                    {
                        ar.MantisList.Add(item);
                    }
                }
                else
                {
                    // add message line to corresponding project
                    ar.ProjectContent.Add(drm.Message);
                }
            }

            // sort and merge
            if (mergeSameProject)
            {
                WeeklyReport = MergeSameReports(WeeklyReport);
            }
            WeeklyReport.Sort();
        }
        // To protect from overposting attacks, enable the specific properties you want to bind to, for
        // more details, see https://aka.ms/RazorPagesCRUD.
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                // The Page method creates a PageResult object that renders the Create.cshtml page.
                return(Page());
            }

            using (WebDBManager webm = new WebDBManager(Comm.SERVER_URL))
            {
                int projectId = await webm.TryAddProjectAsync(NewProject);

                NewDailyReport.ProjectId = projectId;
                NewDailyReport           = await webm.AddNew <DailyReport>(NewDailyReport, nameof(DailyReport));
            }

            return(RedirectToPage("./Index"));
        }
        public async Task <IActionResult> OnGetAsync(int?pid, int?rid)
        {
            if (pid == null || rid == null)
            {
                return(NotFound());
            }

            using (WebDBManager webm = new WebDBManager(Comm.SERVER_URL))
            {
                Project     project;
                DailyReport dailyReport;
                try
                {
                    project = await webm.ReadProjectAsync(pid.Value);

                    dailyReport = await webm.ReadDailyReportAsync(rid.Value);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    return(NotFound());
                }

                if (project == null || dailyReport == null)
                {
                    return(NotFound());
                }

                Period             = new PeriodReport();
                Period.ProjectName = project.ProjectName;
                Period.ProjectID   = project.Id;
                Period.Version     = project.Version;
                Period.ReoprtID    = dailyReport.Id;
                Period.Date        = dailyReport.Date;
                Period.Message     = dailyReport.Message;
            }

            return(Page());
        }