Beispiel #1
0
    /// <summary>
    /// заполнение базы данных отделов
    /// </summary>
    public static void GenerateDepartmentRepository(ACSContext Context)
    {
        // var location = System.Reflection.Assembly.GetExecutingAssembly().Location;

        //сортировка отделов по коду возрастания
        var query = from dataDeport in DataLoader1C.Data.ОрганизационнаяСтруктура
                    orderby dataDeport.Код
                    select dataDeport;

        foreach (var dataDepartment in query)
        {
            if (string.IsNullOrEmpty(dataDepartment.Код))
            {
                continue;
            }
            var department = new Department()
            {
                Name       = dataDepartment.Наименование,
                Code1C     = int.Parse(dataDepartment.Код),
                IsDeleted  = XMLDataTypeConverter.ToBoolean(dataDepartment.ПометкаУдаления),
                Inactive   = XMLDataTypeConverter.ToBoolean(dataDepartment.Неактивное),
                s_AuthorID = 1,
                s_EditorID = 1,
            };


            Context.Departments.Add(department);
            Context.SaveChanges();
        }
    }
Beispiel #2
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();
        }
    }
Beispiel #3
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();
        }
    }
Beispiel #4
0
    static DateTime?GetEndDateWorkHistory(СотрудникиСотрудник dUser, СотрудникиСотрудникЗаписьКадровойИстории wh)
    {
        var WHlist = dUser.КадроваяИстория.ToList();

        if (WHlist == null)
        {
            return(null);
        }

        int indexLastElement = WHlist.Count - 1;

        int indexWH = dUser.КадроваяИстория.ToList().IndexOf(wh);

        if (indexLastElement == indexWH)
        {
            return(null);
        }

        return(XMLDataTypeConverter.GetDateTime(WHlist.ElementAt(indexWH + 1).Дата));
    }
Beispiel #5
0
    /// <summary>
    /// заполнение базы данных пользователей
    /// </summary>
    public static void GenerateUserRepository(ACSContext Context)
    {
        // var location = System.Reflection.Assembly.GetExecutingAssembly().Location;

        //отфильтровали по актуальности
        //сгрупировали по кодфизлица
        //выбрали из каждой группы запись с самой новой датой принятия
        //т.к там самые свежие паспортные данные и фамилии
        //отсортировали по дате принятия и фамилии
        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;

        //{
        //    Email = "*****@*****.**",
        //        UserName = "******",
        //        Password = "******",
        //        Name = "Семен Семенович Горбунков",
        //        Address = "ул. Спортивная, д.30, кв.75",
        //        Role = "admin",

        foreach (var dataUser in query)
        {
            string[] DataFullNameEmp = dataUser.ФИО.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            DataUserInActiveDirectory dataUserAD = new DataUserInActiveDirectory();

            dataUserAD.SearchData(DataFullNameEmp[0], DataFullNameEmp[1]);

            Console.WriteLine(dataUserAD.SID.ToString().Length.ToString());
            var newDataUser = new Employee()
            {
                LName = DataFullNameEmp[0],
                FName = DataFullNameEmp[1],
                MName = DataFullNameEmp[2],
                //FullName = dataUser.ФИО,
                //ShortName = String.Format("{0} {1}.{2}.", DataFullNameEmp[0], DataFullNameEmp[1].FirstOrDefault(), DataFullNameEmp[2].FirstOrDefault()),
                SID    = dataUserAD.SID,
                Guid1C = Guid.Parse(dataUser.КодФизЛицо),

                Birthday = XMLDataTypeConverter.GetDateTime(dataUser.ДатаРождения),
                Email    = dataUserAD.Email,
                //PersonnelNumber = Convert.ToInt32(dataUser.ТабельныйНомер),
                PersonnelNumber = dataUser.ТабельныйНомер,

                s_AuthorID = 1,
                s_EditorID = 1,
            };


            EmployeePassport Passport = new EmployeePassport()
            {
                //паспортные данные
                DateOfIssue = XMLDataTypeConverter.GetDateTime(dataUser.ДокументДатаВыдачи),
                IssuedBy    = dataUser.ДокументКемВыдан,
                Number      = dataUser.ДокументНомер.ToString(),
                Series      = dataUser.ДокументСерия,
                UnitCode    = dataUser.ДокументКодПодразделения,
                Employee    = newDataUser
            };

            //добавляя паспартные данные, автоматически добавляются и пользовательские
            Context.EmployeesPassports.Add(Passport);

            Context.SaveChanges();
        }
    }