public virtual void CopyCompSpecificFields(ICompDesc src) { MainJudge = src.MainJudge; MainSecretary = src.MainSecretary; ShowRow6 = src.ShowRow6; Row6 = src.Row6; SecondColNameType = src.SecondColNameType; DestCompFolder = src.DestCompFolder; }
public override void CopyCompSpecificFields(ICompDesc src) { base.CopyCompSpecificFields(src); SourceWorkbookName = (src as CompDescLocalWorkbook).SourceWorkbookName; }
public GroupItemBase(ICompDesc compDesc) { CompDesc = compDesc; }
public bool Extract(ICompDesc compDesc, IEnumerable <IGroupItem> compGroups, out string message) { message = null; CompDescRemoteDB remoteCompDesc = compDesc as CompDescRemoteDB; GroupsMembers = new List <KeyValuePair <IGroupItem, IEnumerable <CFullMemberInfo> > >(); var entities = OnlineDBManager.Instance.Entities; foreach (var @group in compGroups.Cast <GroupItemRemoteDB>().Where(arg => arg.IsSelected)) { try { var pupils = (from part in entities.participants join pupil in entities.pupil on part.pupil_id equals pupil.id where part.competition_id == remoteCompDesc.ID && part.group_id == @group.ID && part.participants_kind.Any(kind => kind.kind_id == (int)enOnlineDBKind.Speed) select new { pupil.lastname, pupil.firstname, pupil.age, pupil.team, part.rang_id, part.status, }) .ToList() .Where(x => x.status); // Почему-то это условие не срабатывает в запросе к БД var members = pupils .Select(pupil => new CFullMemberInfo() { Surname = pupil.lastname, Name = pupil.firstname, YearOfBirth = pupil.age, SecondCol = pupil.team, InitGrade = (byte)((enOnlineGrade)pupil.rang_id).ToLocalGradeValue() }) .ToList(); GroupsMembers.Add(new KeyValuePair <IGroupItem, IEnumerable <CFullMemberInfo> >(@group, members)); } catch (Exception ex) { message = ex.Message; return(false); } } if (GroupsMembers.Count == 0) { message = Properties.Resources.resNoGroupsToGenerateWorkbooks; return(false); } var groupsWoMembers = GroupsMembers.Where(arg => arg.Value.Count() == 0); if (groupsWoMembers.Any()) { message = string.Format(Properties.Resources.resfmtNoMembersInSomeGroups, string.Join(", ", groupsWoMembers.Select(arg => arg.Key.Name))); return(false); } CompDesc = compDesc; return(true); }
public bool Extract(ICompDesc compDesc, IEnumerable <IGroupItem> compGroups, out string message) { CompDescLocalWorkbook compDescLocal = compDesc as CompDescLocalWorkbook; message = null; GroupsMembers = new List <KeyValuePair <IGroupItem, IEnumerable <CFullMemberInfo> > >(); try { using (var excelApp = new DisposableWrapper <ExcelApplicationEx>(GlobalDefines.StartExcel(), app => { if (app != null) { app.App.DisplayAlerts = true; if (app.NewAppCreated) { app.App.Quit(); } app = null; } })) { bool WbkOpened; var wbk = WorkbookGenerator.OpenWbk(excelApp, compDescLocal.SourceWorkbookName, out WbkOpened); if (wbk == null) { message = string.Format(Properties.Resources.resfmtSourceWorkbookCouldNotBeOpened, compDescLocal.SourceWorkbookName); return(false); } foreach (var @group in compGroups.Cast <GroupItemLocalWorkbook>()) { MSExcel.Worksheet wsh = wbk.Worksheets[@group.SheetName]; MSExcel.Range rng = wsh.Range[$"{@group.TLCell}:{@group.BRCell}"]; List <CFullMemberInfo> members = new List <CFullMemberInfo>(); for (int row = 0; row < rng.Rows.Count; row++) { string[] NameAndSurname; GlobalDefines.CorrectSurnameAndName(rng[row + 1, @group.PersonalDataColumnIndex].Value, out NameAndSurname); enGrade grade; GlobalDefines.ParseGrade(rng[row + 1, @group.GradeColumnIndex].Value?.ToString(), out grade); short?yearOfBirth = rng[row + 1, @group.YoBColumnIndex].Value == null ? null : (short?)Convert.ToUInt16(rng[row + 1, @group.YoBColumnIndex].Value); members.Add(new CFullMemberInfo() { Surname = NameAndSurname[0], Name = NameAndSurname[1], YearOfBirth = yearOfBirth, SecondCol = rng[row + 1, @group.TeamColumnIndex].Value, InitGrade = grade == enGrade.None ? null : (byte?)grade }); } GroupsMembers.Add(new KeyValuePair <IGroupItem, IEnumerable <CFullMemberInfo> >(@group, members)); } } CompDesc = compDesc; return(true); } catch (Exception ex) { message = ex.Message; return(false); } }
private bool CreateGroupWbkAndWriteGroupDesc(ExcelApplicationEx excelApp, string wbkTemplateFullPath, string wbkFullPath, ICompDesc compDesc, IGroupItem groupDesc, out string message) { message = null; if (!File.Exists(wbkTemplateFullPath)) { message = $"error in CreateGroupWbkAndWriteGroupDesc: {wbkTemplateFullPath} is not existed"; return(false); } File.Copy(wbkTemplateFullPath, wbkFullPath, true); return(RunWbkOperation <bool>(excelApp, wbkFullPath, false, true, wbk => { try { #region WorkbookDataFileWrapper var dataFileWrapper = new WorkbookDataFileWrapper(compDesc.DestCompFolder); #endregion #region SetupWorksheetHelper var wshHelper = new SetupWorksheetHelper(dataFileWrapper, wbk); wshHelper.CompName = compDesc.Name; wshHelper.MainJudge = compDesc.MainJudge; wshHelper.MainSecretary = compDesc.MainSecretary; wshHelper.Row6 = compDesc.ShowRow6 ? compDesc.Row6 : null; wshHelper.StartCompDate = groupDesc.StartDate; wshHelper.EndCompDate = groupDesc.EndDate; wshHelper.StartGroupYear = groupDesc.StartYear; wshHelper.EndGroupYear = groupDesc.EndYear; #endregion string errorMessage; if (!dataFileWrapper.Save(out errorMessage)) { return new RunWbkActionResult <bool>(false, errorMessage); } #region Заполняем FLAGS var flagsHelper = new WorkbookFlagsWrapper() { Value = wshHelper.FLAGS }; flagsHelper.SetFlagsByCompDates(groupDesc.StartDate, groupDesc.EndDate); flagsHelper.SecondColNameType = compDesc.SecondColNameType; flagsHelper.ShowRow6 = compDesc.ShowRow6; lock (DBManagerApp.m_AppSettings.m_SettingsSyncObj) { var availableGroupName = DBManagerApp .m_AppSettings .m_Settings .AvailableGroupNames .First(arg => string.Compare(arg.GroupName, groupDesc.Name, true) == 0); flagsHelper.Sex = availableGroupName.Sex; flagsHelper.GroupYearsAreNeeded = availableGroupName.YearsRangeCanBeSet; flagsHelper.GroupIndexValue = availableGroupName.ValueInWbkFlags; } flagsHelper.WorkbookIsOpenedFirstTime = false; wshHelper.FLAGS = flagsHelper.Value; #endregion wshHelper.SaveAllFlags(); wbk.Save(); wshHelper.SendRequestToFillWbkBasedOnSetupSheet(); return new RunWbkActionResult <bool>(true); } catch (Exception ex) { return new RunWbkActionResult <bool>(false, $"exception in CreateGroupWbkAndWriteGroupDesc: {ex.Message}"); } }, out message)); }