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(); } }
/// <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(); } }
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).Дата)); }
/// <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(); } }