Exemple #1
0
    public static void GenerateWorkHistoryRepository(ACSContext Context)
    {
        //все должности
        var query = (from dUser in DataLoader1C.Data.Сотрудники
                     from wh in dUser.КадроваяИстория
                     orderby wh.Дата
                     select new
        {
            КодПодразделения = wh.КодПодразделения,
            Должность = wh.Должность,
            КодФизЛицо = dUser.КодФизЛицо,
            Код = Guid.Parse(dUser.Код),
            ДатаНачала = wh.Дата,
            ДатаОкончания = GetEndDateWorkHistory(dUser, wh),
            Ставка = wh.Ставка
        });

        foreach (var WorkHistory in query)
        {
            if (string.IsNullOrEmpty(WorkHistory.КодПодразделения.ToString()))
            {
                continue;
            }

            Department department = Context.Departments.FirstOrDefault(d => d.Code1C == WorkHistory.КодПодразделения);

            if (department == null)
            {
                continue;
            }

            //КодДолжности1С
            PostsEmployeesСode1С PUC = Context.PostsEmployeesСode1С.FirstOrDefault
                                           (puc => puc.CodePost1C == WorkHistory.Код);

            if (PUC == null)
            {
                continue;
            }

            var wh = new WorkHistory()
            {
                Department = department,
                PostName   = WorkHistory.Должность,
                StartDate  = XMLDataTypeConverter.GetDateTime(WorkHistory.ДатаНачала),
                EndDate    = WorkHistory.ДатаОкончания,
                Rate       = double.Parse(WorkHistory.Ставка),

                PostsEmployeesСode1С = PUC,
                s_AuthorID           = 1,
                s_EditorID           = 1
            };


            Context.WorkHistories.Add(wh);
            Context.SaveChanges();
        }
    }
Exemple #2
0
    /// <summary>
    /// Заполнение бд код должности 1с и кому этот код пренадлежит
    /// </summary>
    public static void GeneratePostsEmployeesСode1СRepository(ACSContext Context)
    {
        //все должности
        //var query = (from dUser in DataLoader1C.Data.Сотрудники
        //             select dUser.Код).Distinct();

        var query = from db in DataLoader1C.Data.Сотрудники
                    where db.Актуальность == "Да"
                    group db by db.Код into @group
                    from dataEmpl in @group
                    where XMLDataTypeConverter.GetDateTime(dataEmpl.Принят)
                    == @group.Max(dataEmpl => XMLDataTypeConverter.GetDateTime(dataEmpl.Принят))
                    orderby XMLDataTypeConverter.GetDateTime(dataEmpl.Принят), dataEmpl.ФИО
        select dataEmpl;


        var data = query.ToList();

        if (data.Count == 0)
        {
            return;
        }

        foreach (var empl in query)
        {
            Guid Guid1C;

            if (!Guid.TryParse(empl.КодФизЛицо, out Guid1C))
            {
                continue;
            }


            Employee userWithGuid1C = Context.Employees.FirstOrDefault(u => u.Guid1C == Guid1C);

            if (userWithGuid1C == null)
            {
                continue;
            }

            int?Id = userWithGuid1C.Id;

            var PostsEmployeesСode1С = new PostsEmployeesСode1С()
            {
                CodePost1C = Guid.Parse(empl.Код),

                Employee   = userWithGuid1C,
                s_AuthorID = 1,
                s_EditorID = 1
            };

            Context.PostsEmployeesСode1С.Add(PostsEmployeesСode1С);
            Context.SaveChanges();
        }
    }