public static void InitFormContainerActions(TileContainer con) { con.Properties.ItemCheckMode = TileItemCheckMode.Single; var deleteAction = new DelegateAction(() => true, async () => { var checkedTile = con.Items.FirstOrDefault(x => x.Checked.HasValue && x.Checked.Value) as Tile; if (checkedTile == null) return; if (checkedTile.Tag == null) return; int? formId = TagHelper.GetFormDataId(checkedTile.Tag.ToString()); if (!formId.HasValue) return; var view = (WindowsUIView)con.Manager.View; var fly = view.ContentContainers.FindFirst(x => x is Flyout && x.Caption == "Сообщение") as Flyout; var formType = ((Page)checkedTile.ActivationTarget).Document.ControlName; switch (formType) { case "FormData1": case "ArchiveFormData1": case "FormData2": case "ArchiveFormData2": { try { using (var repo = new Repository()) { var data = await repo.GetEduFormDataById(formId.Value); var form = await repo.GetForm(data.form_id); var res = fly != null ? GuiUtility.ShowFlyoutMessage(view, fly, "Подтверждение", string.Format("Удалить форму \"{0}\"?", form), FlyoutCommand.Yes, FlyoutCommand.No) : MessageBox.Show(string.Format("Удалить форму {0}?", form), "Подтверждение", MessageBoxButtons.OKCancel); if (res == DialogResult.No) return; if (await form.IsBlockedAsync()) { var mes = fly != null ? GuiUtility.ShowFlyoutMessage(view, fly, "Информация", "Удаление формы отключено, так как срок сдачи истек.\n" + "Чтобы иметь возможность удалить эту форму, обратитесь к региональному оператору") : MessageBox.Show("Удаление формы отключено, так как срок сдачи истек.\n" + "Чтобы иметь возможность удалить эту форму, обратитесь к региональному оператору", "Информация", MessageBoxButtons.OKCancel); return; } var file = await repo.GetFile(data.file_id); var forms = file.edu_form_data; var tag = TagHelper.GetFormDataTag(TagHelper.TagType.Tile, data); var tiles = con.Items.Find(t => t.Tag.ToString() == tag).ToArray(); repo.RemoveRange(forms); repo.Remove(file); await repo.SaveChangesAsync(); if (con.Items.Count == 1) con.Items.Clear(); else con.Items.RemoveRange(tiles); } } catch (Exception ex) { var mess = fly != null ? GuiUtility.ShowFlyoutMessage(view, fly, "Ошибка удаления", ex.Message) : MessageBox.Show(ex.Message, "Ошибка удаления", MessageBoxButtons.OK); } break; } case "FormData3": case "ArchiveFormData3": case "FormData4": case "ArchiveFormData4": { try { using (var repo = new Repository()) { var data = await repo.GetMunitFormDataById(formId.Value); var form = await repo.GetForm(data.form_id); var res = fly != null ? GuiUtility.ShowFlyoutMessage(view, fly, "Подтверждение", string.Format("Удалить форму \"{0}\"?", form), FlyoutCommand.Yes, FlyoutCommand.No) : MessageBox.Show(string.Format("Удалить форму {0}?", form), "Подтверждение", MessageBoxButtons.OKCancel); if (res == DialogResult.No) return; if (await form.IsBlockedAsync()) { var mes = fly != null ? GuiUtility.ShowFlyoutMessage(view, fly, "Информация", "Удаление формы отключено, так как срок сдачи истек.\n" + "Чтобы иметь возможность удалить эту форму, обратитесь к региональному оператору") : MessageBox.Show("Удаление формы отключено, так как срок сдачи истек.\n" + "Чтобы иметь возможность удалить эту форму, обратитесь к региональному оператору", "Информация", MessageBoxButtons.OKCancel); return; } var file = data.file; var forms = file.municipality_form_data; var tag = TagHelper.GetFormDataTag(TagHelper.TagType.Tile, data); var tiles = con.Items.Find(t => t.Tag.ToString() == tag).ToArray(); repo.RemoveRange(forms); repo.Remove(file); await repo.SaveChangesAsync(); if (con.Items.Count == 1) con.Items.Clear(); else con.Items.RemoveRange(tiles); } } catch (Exception ex) { var mess = fly != null ? GuiUtility.ShowFlyoutMessage(view, fly, "Ошибка удаления", ex.Message) : MessageBox.Show(ex.Message, "Ошибка удаления", MessageBoxButtons.OK); } break; } case "FormData5": case "ArchiveFormData5": case "FormData6": case "ArchiveFormData6": { try { using (var repo = new Repository()) { var data = await repo.GetRegionFormDataById(formId.Value); var res = fly != null ? GuiUtility.ShowFlyoutMessage(view, fly, "Подтверждение", string.Format("Удалить форму \"{0}\"?", data.form), FlyoutCommand.Yes, FlyoutCommand.No) : MessageBox.Show(string.Format("Удалить форму {0}?", data.form), "Подтверждение", MessageBoxButtons.OKCancel); if (res == DialogResult.No) return; var file = data.file; var forms = file.region_form_data; var tag = TagHelper.GetFormDataTag(TagHelper.TagType.Tile, data); var tiles = con.Items.Find(t => t.Tag.ToString() == tag).ToArray(); repo.RemoveRange(forms); repo.Remove(file); await repo.SaveChangesAsync(); if (con.Items.Count == 1) con.Items.Clear(); else con.Items.RemoveRange(tiles); } } catch (Exception ex) { var mess = fly != null ? GuiUtility.ShowFlyoutMessage(view, fly, "Ошибка удаления", ex.Message) : MessageBox.Show(ex.Message, "Ошибка удаления", MessageBoxButtons.OK); } break; } } }) { Caption = "Удалить форму", Type = ActionType.Context, Edge = ActionEdge.Right, Behavior = ActionBehavior.HideBarOnClick }; var searchAction = new DelegateAction(() => true, () => (con.Manager.View as WindowsUIView).ShowSearchPanel()) { Caption = "Поиск", Type = ActionType.Default, Edge = ActionEdge.Left, Behavior = ActionBehavior.HideBarOnClick }; con.Actions.Clear(); con.Actions.Add(deleteAction); con.Actions.Add(searchAction); }
private async void windowsUIViewMain_QueryControl(object sender, QueryControlEventArgs e) { try { var queryReportRegex = new Regex(@"QueryReport(?<idx>\d+)"); var queryReportRegex2 = new Regex(@"QueryReport-2(?<idx>\d+)"); var queryReportMatch = queryReportRegex.Match(e.Document.ControlName); var queryReportMatch2 = queryReportRegex2.Match(e.Document.ControlName); if (queryReportMatch.Success) { try { var idx = int.Parse(queryReportMatch.Groups["idx"].Value); e.Control = new XtraReportViewControl(windowsUIViewMain) {Report = ReportFactory.Reports[idx]}; return; } catch { throw new KeyNotFoundException("Отчет не найден"); } } if (queryReportMatch2.Success) { try { var idx = int.Parse(queryReportMatch2.Groups["idx"].Value); e.Control = new XtraReportViewControl2(windowsUIViewMain) { ReportData = ReportFactory2.Reports[idx] }; return; } catch { throw new KeyNotFoundException("Отчет не найден"); } } switch (e.Document.ControlName) { case "Questionary": { //XtraDictionaryQuestionaryControl questionaryControl = new XtraDictionaryQuestionaryControl(this.windowsUIViewMain); //int? questionaryId = TagHelper.GetQuestionaryId(e.Document.Tag.ToString()); //if (questionaryId.HasValue) // questionaryControl.CurrentQuestionary = RepoHelper.Repo.GetById<Questionary>(questionaryId.Value); //e.Control = questionaryControl; break; } case "QueriesEdu": { var repo = new Repository(); var queryControl = new XtraQueryEduControl(windowsUIViewMain, repo) { FormDataSource = await repo.GetFormsHaveQueries(FormType.Edu, FormType.OtherEdu), YearDataSource = await repo.GetAvailableYears(), QueryPartHeadDataSource = await repo.GetQueriesHeadParts() }; e.Control = queryControl; break; } case "QueriesMunicipality": { var repo = new Repository(); var queryControl = new XtraQueryMunicipalityControl(windowsUIViewMain, repo) { FormDataSource = await repo.GetFormsHaveQueries(FormType.Municipality, FormType.OtherMunicipality), YearDataSource = await repo.GetAvailableYears(), QueryPartHeadDataSource = await repo.GetQueriesHeadParts() }; e.Control = queryControl; break; } case "QueriesRegion": { var repo = new Repository(); var queryControl = new XtraQueryRegionControl(windowsUIViewMain, repo) { FormDataSource = await repo.GetFormsHaveQueries(FormType.Region, FormType.OtherRegion), YearDataSource = await repo.GetAvailableYears(), QueryPartHeadDataSource = await repo.GetQueriesHeadParts() }; e.Control = queryControl; break; } case "AlignData": { var repo = new Repository(); var formDataId = (int) RuntimeSettings.Current["FormDataId"]; var formType = (FormType) RuntimeSettings.Current["FormTypeId"]; var currentFormData = await repo.GetFormDataById(formDataId, formType); var currentForm = currentFormData.form; var previousData = await repo.FindYesteryearFormData(currentFormData); var alignDataControl = new XtraAlignDataControl(windowsUIViewMain, repo) { PreviousFormData = previousData, CurrentFormData = currentFormData }; e.Control = alignDataControl; await alignDataControl.Process(currentForm); break; } case "DictAlignData": { var repo = new Repository(); var alignDataControl = new XtraDictionaryAlignDataFormulaControl(windowsUIViewMain, repo) { FormDataSource = await repo.GetForms() }; e.Control = alignDataControl; break; } case "DictCreateQuery": { var repo = new Repository(); var createQueryControl = new XtraCreateQueryControl(windowsUIViewMain, repo) { QueryAutocomletePartSource = await repo.GetQueriesAutocompleteParts(), QueryHeadPartSource = await repo.GetQueriesHeadParts() }; if (Authentication.Credentials.IsRegion) { createQueryControl.FormsWithTemplatesDataSource = await repo.GetFormsWithTemplates(); } else if (Authentication.Credentials.IsMunicipality) { createQueryControl.FormsWithTemplatesDataSource = await repo.GetFormsWithTemplatesForMunicipality(Authentication.Credentials.MunitId); } else if (Authentication.Credentials.IsEdu) { createQueryControl.FormsWithTemplatesDataSource = await repo.GetFormsWithTemplatesForEdu(Authentication.Credentials.EduId); } e.Control = createQueryControl; break; } case "DictCredentials": { var repo = new Repository(); var dictCredControl = new XtraDictCredentials(windowsUIViewMain, repo) { CredentialsDataSource = await repo.GetCredential(), EduDataSource = await repo.GetEdus(), MunicipalityDataSource = await repo.GetMunicipalities(), RegionDataSource = await repo.GetRegions() }; e.Control = dictCredControl; break; } case "DictEdu": { var repo = new Repository(); var dictionaryEduControl = new XtraDictionaryEduControl(windowsUIViewMain, repo) { EduDataSource = await repo.GetEdus(), MunicipalityDataSource = await repo.GetMunicipalities(), DataSourceEduKind = await repo.GetEduKinds() }; e.Control = dictionaryEduControl; break; } case "DictMunicipality": { var repo = new Repository(); var dictionaryMunitControl = new XtraDictionaryMunitControl(windowsUIViewMain, repo) { MunicipalityDataSource = await repo.GetMunicipalities() }; e.Control = dictionaryMunitControl; break; } case "DictTemplate": { var repo = new Repository(); var templateControl = new XtraDictionaryTemplateControl(windowsUIViewMain, repo) { FormsWithTemplatesDataSource = await repo.GetFormsWithTemplates(), FormsWithoutTemplatesDataSource = await repo.GetFormsWithoutTemplates() }; e.Control = templateControl; break; } case "DictForms": { var repo = new Repository(); var dictionaryFormControl = new XtraDictionaryFormsControl(windowsUIViewMain, repo) { FormDataSource = await repo.GetForms(), DataSourceEduKind = await repo.GetEduKinds(), FormTypeDataSource = await repo.GetFormTypes(), MunicipalityDataSource = await repo.GetMunicipalities() }; e.Control = dictionaryFormControl; break; } case "DictMunicipalityFormula": { var repo = new Repository(); var dictionaryMunicipalityFormulaControl = new XtraDictionarySummaryFormulaControl(windowsUIViewMain, repo); e.Control = dictionaryMunicipalityFormulaControl; dictionaryMunicipalityFormulaControl.RegularFormDataSource = await repo.GetForms(); dictionaryMunicipalityFormulaControl.SummaryFormDataSource = await repo.GetForms(); break; } case "ArchiveFormData6": case "FormData6": //допформа case "ArchiveFormData5": case "FormData5": //форма региона { var dataId = TagHelper.GetFormDataId(e.Document.Tag.ToString()); if (dataId.HasValue) { var repo = new Repository(); var fd = await repo.GetRegionFormDataById(dataId.Value); var sheetControl = new XtraSpreadsheet(windowsUIViewMain, repo) { FormDataSource = await repo.GetRegionForms(), FormData = fd, FormStatus = (Status)fd.status, Source = XtraSpreadsheet.FormSource.File, Mode = XtraSpreadsheet.ControlMode.Edit, ActiveForm = fd.form }; sheetControl.LoadDocument(); e.Control = sheetControl; } else { e.Control = new Control(); } break; } case "ArchiveFormData4": case "FormData4": //допформа case "ArchiveFormData3": case "FormData3": //форма муниципалитета { var dataId = TagHelper.GetFormDataId(e.Document.Tag.ToString()); if (dataId.HasValue) { var repo = new Repository(); var fd = await repo.GetMunitFormDataById(dataId.Value); var sheetControl = new XtraSpreadsheet(windowsUIViewMain, repo) { FormDataSource = await repo.GetMunicipalityForms(), FormData = fd, FormStatus = (Status)fd.status, Source = XtraSpreadsheet.FormSource.File, Mode = await fd.form.IsBlockedAsync() ? XtraSpreadsheet.ControlMode.Disabled : XtraSpreadsheet.ControlMode.Edit, ActiveForm = fd.form }; sheetControl.LoadDocument(); e.Control = sheetControl; } else { e.Control = new Control(); } break; } case "ArchiveFormData1": case "ArchiveFormData2": case "FormData2": //допформа case "FormData1": //форма организации { var dataId = TagHelper.GetFormDataId(e.Document.Tag.ToString()); if (dataId.HasValue) { var repo = new Repository(); var fd = await repo.GetEduFormDataById(dataId.Value); var sheetControl = new XtraSpreadsheet(windowsUIViewMain, repo) { FormData = fd, FormStatus = (Status)fd.status, Source = XtraSpreadsheet.FormSource.File, Mode = await fd.form.IsBlockedAsync() ? XtraSpreadsheet.ControlMode.Disabled : XtraSpreadsheet.ControlMode.Edit }; if (Authentication.Credentials.IsEdu) { var edu = await repo.GetEdu(Authentication.Credentials.EduId); if (edu.edu_kind_id.HasValue) sheetControl.FormDataSource = await repo.GetFormsByEduKind(edu.edu_kind_id.Value); } else { sheetControl.FormDataSource = await repo.GetForms(); } sheetControl.ActiveForm = fd.form; sheetControl.LoadDocument(); e.Control = sheetControl; } else { e.Control = new Control(); } break; } case "XtraProgress": e.Control = new XtraProgress(); break; case "Authentication": e.Control = _authForm; break; case "Passport": { var repo = new Repository(); if (Authentication.Credentials.IsEdu) { var passportControl = new XtraDictionaryEduPassportControl(windowsUIViewMain, repo) { MunicipalityDataSource = await repo.GetMunicipalities(), ActivityTypeDataSource = await repo.GetActivityTypes(), EduStatusDataSource = await repo.GetEduStatuses(), EduTypeDataSource = await repo.GetEduTypes(), DataSourceEduKind = await repo.GetEduKinds(), ManagementAgencyDataSource = await repo.GetManagementAgencies(), ManagementAgencyActivityDataSource = await repo.GetManagementAgencyActivities(), OwnershipTypeDataSource = await repo.GetOwnershipTypes(), Edu = await repo.GetEdu(Authentication.Credentials.EduId) }; e.Control = passportControl; } else if(Authentication.Credentials.IsMunicipality) { var passportControl = new XtraDictionaryMunicipalityPassportControl(windowsUIViewMain, repo) { Municipality = await repo.GetMunicipality(Authentication.Credentials.MunitId) }; e.Control = passportControl; } break; } case "UploadSheetFromFile": { var repo = new Repository(); var sheetControl = new XtraSpreadsheet(windowsUIViewMain, repo) { Source = XtraSpreadsheet.FormSource.File, Mode = XtraSpreadsheet.ControlMode.New }; var forms = new List<form>(); if (Authentication.Credentials.IsEdu) { var edu = await repo.GetEdu(Authentication.Credentials.EduId); forms = await repo.GetFormsByEduKind(edu.edu_kind.edu_kind_id); } else if (Authentication.Credentials.IsMunicipality) { forms = await repo.GetMunicipalityForms(); } else if (Authentication.Credentials.IsRegion) { forms = await repo.GetForms(); } sheetControl.FormDataSource = forms; sheetControl.ActiveForm = forms.FirstOrDefault(); e.Control = sheetControl; break; } case "UploadSheetFromTemplate": { var repo = new Repository(); var sheetControl = new XtraSpreadsheet(windowsUIViewMain, repo) { Source = XtraSpreadsheet.FormSource.Template, Mode = XtraSpreadsheet.ControlMode.New }; var forms = new List<form>(); if (Authentication.Credentials.IsEdu) { var edu = await repo.GetEdu(Authentication.Credentials.EduId); forms = await repo.GetFormsByEduKind(edu.edu_kind.edu_kind_id); } else if (Authentication.Credentials.IsMunicipality) { forms = await repo.GetFormsByType(false, FormType.Municipality, FormType.OtherMunicipality, FormType.Edu, FormType.OtherEdu); } else if (Authentication.Credentials.IsRegion) { forms = await repo.GetForms(); } sheetControl.FormDataSource = forms; sheetControl.ActiveForm = forms.FirstOrDefault(); e.Control = sheetControl; break; } case "RequestQuery": { var repo = new Repository(); var messageControl = new XtraMessageControl(windowsUIViewMain, repo) { MessageType = XtraMessageControl.MessageTypeEnum.RequestForQuery, FormDataSource = await repo.GetForms() }; e.Control = messageControl; break; } case "BugReport": { var repo = new Repository(); var messageControl = new XtraMessageControl(windowsUIViewMain, repo) { MessageType = XtraMessageControl.MessageTypeEnum.BugReport, FormDataSource = await repo.GetForms() }; e.Control = messageControl; break; } case "MessageList": { var repo = new Repository(); var messageListControl = new XtraMessageListControl(windowsUIViewMain, repo) { DataSourceMessage = await repo.GetMessages() }; e.Control = messageListControl; break; } case "FormDetailedStatisticsReport": { var doc = windowsUIViewMain.Documents.FindFirst(t => t.ControlName == "FormDetailedStatistics"); var formStatData = new List<t_detailed_form_statistics>(); if (doc != null) { formStatData = (List<t_detailed_form_statistics>)doc.Tag; } var formStatisticReport = new XtraDetailedFormStatisticReport(); var formStatisticReportControl = new XtraReportViewControl(windowsUIViewMain); formStatisticReport.FormStatisticDataSource = formStatData; formStatisticReportControl.Report = formStatisticReport; formStatisticReport.CreateDocument(); e.Control = formStatisticReportControl; break; } case "FormDetailedStatistics": { var repo = new Repository(); var detailedFormStatisticsReport = new XtraFormDetailedStatisticControl(windowsUIViewMain, repo); e.Control = detailedFormStatisticsReport; detailedFormStatisticsReport.FormStatisticDataSource = Authentication.Credentials.IsMunicipality ? await repo.GetDetailedFormStatistics(Authentication.Credentials.MunitId, DateTime.Now.Year) : await repo.GetDetailedFormStatistics(DateTime.Now.Year); detailedFormStatisticsReport.YearsDataSource = await repo.GetAvailableYears(); break; } case "FormStatistics": using (var repo = new Repository()) { var formStatisticReport = new XtraFormStatisticReport { FormStatisticDataSource = Authentication.Credentials.IsMunicipality ? repo.GetFormStatistics(Authentication.Credentials.MunitId).Result : repo.GetFormStatistics().Result }; var formStatisticReportControl = new XtraReportViewControl(windowsUIViewMain) { Report = formStatisticReport }; formStatisticReport.CreateDocument(); e.Control = formStatisticReportControl; break; } case "MunicipalityFormStatistics": using (var repo = new Repository()) { var formStatisticReport = new XtraMunicipalityFormStatisticReport //не ясно почему вылетает deferredloadexception, если использовать await { FormStatisticDataSource = Authentication.Credentials.IsMunicipality ? repo.GetMunicipalityFormStatistics(Authentication.Credentials.MunitId).Result : repo.GetMunicipalityFormStatistics().Result }; var formStatisticReportControl = new XtraReportViewControl(windowsUIViewMain) { Report = formStatisticReport }; formStatisticReport.CreateDocument(); e.Control = formStatisticReportControl; break; } case "MunicipalityFormDetailedStatisticsReport": { var doc = windowsUIViewMain.Documents.FindFirst(t => t.ControlName == "MunicipalityFormDetailedStatistics"); var formStatData = new List<t_detailed_municipality_form_statistics>(); if (doc != null) { formStatData = (List<t_detailed_municipality_form_statistics>)doc.Tag; } var formStatisticReport = new XtraDetailedMunicipalityFormStatisticReport(); var formStatisticReportControl = new XtraReportViewControl(windowsUIViewMain); formStatisticReport.FormStatisticDataSource = formStatData; formStatisticReportControl.Report = formStatisticReport; formStatisticReport.CreateDocument(); e.Control = formStatisticReportControl; break; } case "MunicipalityFormDetailedStatistics": { var repo = new Repository(); var detailedFormStatisticsReport = new XtraMunicipalityFormDetailedStatisticControl(windowsUIViewMain, repo) { FormStatisticDataSource = Authentication.Credentials.IsMunicipality ? repo.GetDetailedMunicipalityFormStatistics(Authentication.Credentials.MunitId).Result : repo.GetDetailedMunicipalityFormStatistics().Result, YearsDataSource = await repo.GetAvailableYears() }; e.Control = detailedFormStatisticsReport; break; } case "FormStatisticsSummary": using (var repo = new Repository()) { var formStatisticReport = new XtraFormStatisticSummaryReport { FormStatisticSummaryDataSource = Authentication.Credentials.IsMunicipality ? repo.GetSummaryFormStatistics(Authentication.Credentials.MunitId).Result : repo.GetSummaryFormStatistics().Result }; var formStatisticReportControl = new XtraReportViewControl(windowsUIViewMain) { Report = formStatisticReport }; formStatisticReport.CreateDocument(); e.Control = formStatisticReportControl; break; } case "SignInOutLog": { var repo = new Repository(); var signInOutReport = new XtraSignInOutReport {Repo = repo}; var signInOutReportControl = new XtraReportViewControl(windowsUIViewMain); var startDate = DateTime.Now.AddDays(-30); var endDate = DateTime.Now; var logs = await repo.GetLoginLogs(startDate, endDate); signInOutReport.SignInOutLogDataSource = logs; signInOutReportControl.Report = signInOutReport; signInOutReport.CreateDocument(); e.Control = signInOutReportControl; break; } case "ExportReport": { var exportControl = new XtraExportReportControl(); e.Control = exportControl; break; } default: e.Control = new Control(); break; } } catch (Exception ex) { GuiUtility.ShowFlyoutMessage(windowsUIViewMain, flyoutMessage, "Ошибка", ex.Message + "\n" + ex.InnerException ?? ex.InnerException.Message, FlyoutCommand.OK); Logger.Error(ex.Message); Logger.Error(ex.StackTrace); e.Control = new Control(); } }