Exemplo n.º 1
0
 public virtual void CopyCompSpecificFields(ICompDesc src)
 {
     MainJudge         = src.MainJudge;
     MainSecretary     = src.MainSecretary;
     ShowRow6          = src.ShowRow6;
     Row6              = src.Row6;
     SecondColNameType = src.SecondColNameType;
     DestCompFolder    = src.DestCompFolder;
 }
Exemplo n.º 2
0
 public override void CopyCompSpecificFields(ICompDesc src)
 {
     base.CopyCompSpecificFields(src);
     SourceWorkbookName = (src as CompDescLocalWorkbook).SourceWorkbookName;
 }
Exemplo n.º 3
0
 public GroupItemBase(ICompDesc compDesc)
 {
     CompDesc = compDesc;
 }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 6
0
        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));
        }