public LookupReportPage(RespLookupReport lookup) { InitializeComponent(); m_viewModel = new ViewModel(lookup); BindingContext = m_viewModel; }
public ViewModel(RespLookupReport lookup) { pageStatus = string.Format("{0}/{1}", lookup.currentPage + 1, lookup.totalPage); canGoPrev = lookup.currentPage > 0; canGoNext = (lookup.currentPage + 1) < lookup.totalPage; items = new ObservableCollection <Item>(); foreach (var entry in lookup.entries) { items.Add(new Item(entry)); } }
public RespLookupReport SendLookupReport() { RespLookupReport result = null; m_reptPP.DoRequest <ReqLookupReport, RespLookupReport>("ReqLookupReport", (send) => { send.SetParameter(new ReqLookupReport { page = 0, rowPerPage = 20, }); }, (recv) => { result = recv.param; }); return(result); }
public RespLookupReport LookupReport(int page = 0) { RespLookupReport result = null; DoRequest <ReqLookupReport, RespLookupReport>( (send) => { send.SetParameter(new ReqLookupReport { page = page, rowPerPage = 20, }); }, (recv) => { result = recv.param; }); return(result); }
protected override void Initialize() { // 리폿하기 procedurePool.AddProcedure <ReqFileReport, RespFileReport>("ReqFileReport", "RespFileReport", UserType.Registered, (recv, send) => { var reporterID = authServer.GetUserIDFromAuthKey(recv.header.authKey); var typestr = ReqFileReport.ReportTypeToString(recv.param.type); sqlHelper.RunSqlSessionWithTransaction((sql) => { var cmd = sql.CreateCommand(); cmd.CommandText = @"insert into report(reporterid, report_type, shortdesc, longdesc) values(@reporterid, @report_type, @shortdesc, @longdesc)" ; cmd.Parameters.AddWithValue("@reporterid", reporterID); cmd.Parameters.AddWithValue("@report_type", typestr); cmd.Parameters.AddWithValue("@shortdesc", recv.param.shortdesc); cmd.Parameters.AddWithValue("@longdesc", recv.param.longdesc); cmd.ExecuteNonQuery(); if (recv.param.type == ReqFileReport.Type.Posting) // 포스팅 리폿인 경우, 추가 정보 { var postcmd = sql.CreateCommand(); postcmd.CommandText = @"insert into report_reason_posting(reportid, reasoncode, postingid) values(last_insert_id(), @code, @postid)" ; postcmd.Parameters.AddWithValue("@code", recv.param.postReportReason); postcmd.Parameters.AddWithValue("@postid", recv.param.reportingPostID); postcmd.ExecuteNonQuery(); } else if (recv.param.type == ReqFileReport.Type.User) // 유저 리폿인 경우, 추가 정보 { var usercmd = sql.CreateCommand(); usercmd.CommandText = @"insert into report_reason_user(reportid, reasoncode, userid) values(last_insert_id(), @code, @userid)" ; usercmd.Parameters.AddWithValue("@code", recv.param.userReportReason); usercmd.Parameters.AddWithValue("@userid", recv.param.reportingUserID); usercmd.ExecuteNonQuery(); } // 응답 send.header.code = BakjeProtocol.Packet.Header.Code.OK; send.SetParameter(new RespFileReport { status = RespFileReport.Status.OK }); return(true); }); }); // 리포트 목록 procedurePool.AddProcedure <ReqLookupReport, RespLookupReport>("ReqLookupReport", "RespLookupReport", UserType.Administrator, (recv, send) => { var rowperpage = recv.param.rowPerPage; var rowstart = rowperpage * recv.param.page; sqlHelper.RunSqlSession((sql) => { var result = new RespLookupReport(); var cmd = sql.CreateCommand(); cmd.CommandText = @"select SQL_CALC_FOUND_ROWS idreport, reporterid, report_type, shortdesc from report order by idreport asc limit " + string.Format("{0}, {1}", rowstart, rowperpage); using (var reader = cmd.ExecuteReader()) { var entries = new List <RespLookupReport.Entry>(); while (reader.Read()) { var reportType = ReqFileReport.ReportTypeFromString(reader.GetString("report_type")); entries.Add(new RespLookupReport.Entry { reportID = reader.GetInt32("idreport"), type = reportType, shortdesc = reader.GetString("shortdesc"), reporterID = reader.GetString("reporterid"), }); } result.entries = entries.ToArray(); reader.Close(); } // 전체 리포트 갯수 var countcmd = sql.CreateCommand(); countcmd.CommandText = "select FOUND_ROWS()"; var totalCount = (int)(long)countcmd.ExecuteScalar(); // 페이지 갯수 등 기록 result.currentPage = recv.param.page; result.totalPage = totalCount / rowperpage + (totalCount % rowperpage == 0 ? 0 : 1); // 응답 send.header.code = BakjeProtocol.Packet.Header.Code.OK; send.SetParameter(result); }); }); // 리포트 열기 procedurePool.AddProcedure <ReqShowReport, RespShowReport>("ReqShowReport", "RespShowReport", UserType.Administrator, (recv, send) => { sqlHelper.RunSqlSession((sql) => { var result = new RespShowReport(); var cmd = sql.CreateCommand(); cmd.CommandText = @"select reporterid, report_type, shortdesc, longdesc, postingid, userid, (case report_type when 'posting' then rp.reasoncode when 'user' then ru.reasoncode else null end) as reason from report left outer join report_reason_posting as rp on idreport = rp.reportid left outer join report_reason_user as ru on idreport = ru.reportid where idreport = @id" ; cmd.Parameters.AddWithValue("@id", recv.param.reportID); using (var reader = cmd.ExecuteReader()) { reader.Read(); result.reporterID = reader.GetString("reporterid"); result.type = ReqFileReport.ReportTypeFromString(reader.GetString("report_type")); result.shortdesc = reader.GetString("shortdesc"); result.longdesc = reader.GetString("longdesc"); if (result.type == ReqFileReport.Type.Posting) { result.repPostingID = reader.GetInt32("postingid"); result.postingRepReason = (ReqFileReport.PostReportReason)reader.GetInt32("reason"); } else if (result.type == ReqFileReport.Type.User) { result.repUserID = reader.GetString("userid"); result.userRepReason = (ReqFileReport.UserReportReason)reader.GetInt32("reason"); } reader.Close(); } // 포스팅 리폿인 경우 추가로 제목까지 읽어온다 if (result.type == ReqFileReport.Type.Posting) { var postcmd = sql.CreateCommand(); postcmd.CommandText = @"select title from postings where idposting = @postid"; postcmd.Parameters.AddWithValue("@postid", result.repPostingID); using (var reader = postcmd.ExecuteReader()) { reader.Read(); result.repPostingTitle = reader.GetString("title"); } } // 응답 send.header.code = BakjeProtocol.Packet.Header.Code.OK; send.SetParameter(result); }); }); // 리포트 삭제 procedurePool.AddProcedure <ReqCloseReport, RespCloseReport>("ReqCloseReport", "RespCloseReport", UserType.Administrator, (recv, send) => { sqlHelper.RunSqlSessionWithTransaction((sql) => { var cmd = sql.CreateCommand(); cmd.CommandText = @"delete from report where idreport = @id"; cmd.Parameters.AddWithValue("@id", recv.param.postID); cmd.ExecuteNonQuery(); // 응답 send.header.code = BakjeProtocol.Packet.Header.Code.OK; send.SetParameter(new RespCloseReport { status = RespCloseReport.Status.OK }); return(true); }); }); }
private void InitActions() { AddAsyncAction("recentPostings", async() => { RespLookupPosting result = null; await App.RunLongTask(() => { result = App.instance.core.post.LookupPosting(null); }); if (result == null) { await DisplayAlert("오류", "포스팅을 읽어올 수 없습니다.", "확인"); } else { Detail = new NavigationPage(new PostingListPage(null, result)); } }); AddAsyncAction("notice", async() => { RespLookupNotice result = null; await App.RunLongTask(() => { result = App.instance.core.notice.LookupNotice(); }); if (result == null) { await DisplayAlert("오류", "포스팅을 읽어올 수 없습니다.", "확인"); } else { Detail = new NavigationPage(new NoticeListPage(result)); } }); AddAsyncAction("myinfo", async() => { RespUserInfo result = null; await App.RunLongTask(() => { result = App.instance.core.user.ShowUserInfo((string)App.Current.Properties["username"]); }); if (result != null) { Detail = new NavigationPage(new UserInfoPage(result)); } }); AddAsyncAction("recentReports", async() => { RespLookupReport result = null; await App.RunLongTask(() => { result = App.instance.core.report.LookupReport(); }); if (result != null) { Detail = new NavigationPage(new LookupReportPage(result)); } }); AddAsyncAction("logout", async() => { await Task.Run(() => { App.instance.core.auth.ClearAuth(); }); await DisplayAlert("로그아웃", "로그아웃하였습니다.", "확인"); App.GetLoginPage(); }); }