예제 #1
0
 private string GetDefaultDestCompFolderName(CompDescLocalWorkbook comp)
 {
     lock (DBManagerApp.m_AppSettings.m_SettingsSyncObj)
     {
         return(System.IO.Path.Combine(DBManagerApp.m_AppSettings.m_Settings.CompetitionsFolder,
                                       comp.GetDefaultDestCompFolderName()));
     }
 }
예제 #2
0
 public GroupItemLocalWorkbook(CompDescLocalWorkbook compDesc) :
     base(compDesc)
 {
 }
예제 #3
0
        public bool InitWndControls()
        {
            using (var wrapper = new DisposableWrapper <ShowAsyncResult>(CWaitingWnd.ShowAsync(Title,
                                                                                               Properties.Resources.resFillingGenerationFromOnlineBDWnd,
                                                                                               this,
                                                                                               CheckAccess()),
                                                                         asyncResult =>
            {
                if (asyncResult?.hFinishedSearchEvent != null)
                {
                    asyncResult.hFinishedSearchEvent.Set();
                }
            }))
            {
                EndYears.Clear();
                StartYears.Clear();
                EndYears.Add((int)enEndYearSpecVals.AndYounger);
                EndYears.Add((int)enEndYearSpecVals.AndElder);
                for (int i = DateTime.Now.Year - 7; i > DateTime.Now.Year - 100; i--)
                {
                    StartYears.Add(i);
                    EndYears.Add(i);
                }


                GroupNames.Clear();
                lock (DBManagerApp.m_AppSettings.m_SettingsSyncObj)
                {
                    foreach (var groupNameDesc in DBManagerApp.m_AppSettings.m_Settings.AvailableGroupNames)
                    {
                        GroupNames.Add(groupNameDesc.GroupName);
                    }
                }

                // Заполняем выпадающие списки текущими значениями
                LocalDBComps.Clear();

                try
                {
                    foreach (var comp in DBManagerApp.m_Entities.descriptions.ToList())
                    {
                        var item = new CompDescLocalWorkbook()
                        {
                            ID        = comp.id_desc,
                            Name      = comp.name,
                            StartDate = DateTime.Today,
                            EndDate   = DateTime.Today.AddDays(2)
                        };
                        item.DestCompFolder   = GetDefaultDestCompFolderName(item);
                        item.PropertyChanged += comp_PropertyChanged;

                        LocalDBComps.Add(item);
                    }
                    SelectedComp = LocalDBComps.LastOrDefault();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this,
                                    string.Format(Properties.Resources.resfmtErrorDuringReadingDataFromOnlineDB, ex.Message),
                                    Title,
                                    MessageBoxButton.OK,
                                    MessageBoxImage.Error);
                    return(false);
                }

                cmbMainJudge.Items.Clear();
                foreach (var mainJudge in DBManagerApp
                         .m_Entities
                         .groups
                         .Select(arg => arg.main_judge)
                         .Where(arg => !string.IsNullOrEmpty(arg))
                         .Distinct())
                {
                    cmbMainJudge.Items.Add(mainJudge);
                }

                cmbMainSecretary.Items.Clear();
                foreach (var mainSecretary in DBManagerApp
                         .m_Entities
                         .groups
                         .Select(arg => arg.main_secretary)
                         .Where(arg => !string.IsNullOrEmpty(arg))
                         .Distinct())
                {
                    cmbMainSecretary.Items.Add(mainSecretary);
                }

                cmbRow6.Items.Clear();
                foreach (var row6 in DBManagerApp
                         .m_Entities
                         .groups
                         .Select(arg => arg.row6)
                         .Where(arg => !string.IsNullOrEmpty(arg))
                         .Distinct())
                {
                    cmbRow6.Items.Add(row6);
                }
            }

            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);
            }
        }