示例#1
0
文件: Program.cs 项目: evreich/WBS
        static void Main(string[] args)
        {
            UserRole          userRole          = new UserRole();
            Providers         providers         = new Providers();
            TypesOfInvestment typesOfInvestment = new TypesOfInvestment();

            using (ClientContext cc = new ClientContext("http://192.168.88.69:3333"))
            {
                cc.Credentials = new NetworkCredential("auchan_admin", "P@ssWord*1!", "Qpd");
                Web web = cc.Web;

                using (NpgsqlConnection connection = new NpgsqlConnection(Constants.connectionString))
                    using (NpgsqlCommand cmd = new NpgsqlCommand(Constants.DeleteCmd, connection))
                    {
                        connection.Open();

                        //Удаление из таблиц данных командой DeleteCmd
                        cmd.ExecuteNonQuery();

                        //Получение таблицы Поставщики
                        List      list = web.Lists.GetByTitle("Поставщики");
                        CamlQuery caml = new CamlQuery();

                        //Получение полей таблицы Поставщики
                        ListItemCollection items = list.GetItems(caml);
                        cc.Load(items);
                        cc.ExecuteQuery();

                        //Заполнение таблицы поставщиков
                        providers.FillProvider(items);

                        //Получение таблицы Типы инвестиций
                        list = web.Lists.GetByTitle("Типы инвестиций");

                        //Получение полей таблицы Поставщики
                        items = list.GetItems(caml);
                        cc.Load(items);
                        cc.ExecuteQuery();

                        //Заполнение таблицы Типы инвестиций
                        typesOfInvestment.FillTypeOfInvestment(items);

                        //Получение таблицы Группы категорий
                        list = web.Lists.GetByTitle("Группы категорий");

                        //Получение данных таблицы Группы категорий
                        items = list.GetItems(caml);
                        cc.Load(items);

                        cc.ExecuteQuery();

                        cmd.CommandText = Constants.InsertGroupsOfCategories;

                        Console.WriteLine("Заполнение данных Группы категорий...");

                        //Заполнение таблицы Группы категорий
                        foreach (ListItem item in items)
                        {
                            cmd.Parameters.Add("@Title", NpgsqlDbType.Text).Value = item["Title"].ToString();
                            cmd.Parameters.Add("@Code", NpgsqlDbType.Text).Value  = item["Code"].ToString();
                            cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                        }

                        //Получение таблицы Категории оборудования
                        list = web.Lists.GetByTitle("Категории оборудования");

                        //Получение столбцов таблицы Категории оборудования
                        items = list.GetItems(caml);
                        cc.Load(items);

                        cc.ExecuteQuery();

                        cmd.CommandText = Constants.InsertCategoriesOfEquipment;

                        Console.WriteLine("Заполнение данных Категории оборудования...");

                        foreach (ListItem item in items)
                        {
                            FieldLookupValue field = item.FieldValues["CategoryGroupsLookup"] as FieldLookupValue;
                            cc.Load(item);

                            cc.ExecuteQuery();

                            cmd.Parameters.Add("@Title", NpgsqlDbType.Text).Value = item["Title"].ToString();
                            cmd.Parameters.Add("@Code", NpgsqlDbType.Text).Value  = item["Code"].ToString();
                            cmd.Parameters.Add("@DepreciationPeriod", NpgsqlDbType.Integer).Value = Convert.ToDouble(item["Amortization"]);
                            cmd.Parameters.Add("@NameCategory", NpgsqlDbType.Text).Value          = field.LookupValue;

                            cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                        }

                        //заполнение Ролей
                        cmd.CommandText = Constants.InsertRole;
                        cmd.ExecuteNonQuery();

                        //заполнение пользователей
                        Console.WriteLine("Заполнение данных Пользователи...");
                        list = web.Lists.GetByTitle("Пользователи");

                        items = list.GetItems(caml);
                        cc.Load(items);

                        cc.ExecuteQuery();

                        List userInformationList = web.SiteUserInfoList;

                        string login       = string.Empty;
                        string jobPosition = string.Empty;
                        string department  = string.Empty;
                        Array  arrayRoles;

                        foreach (var item in items)
                        {
                            try
                            {
                                cmd.CommandText = Constants.InsertProfiles;
                                FieldUserValue userValue = (FieldUserValue)item["DAIUser"];
                                ListItem       itm       = userInformationList.GetItemById(userValue.LookupId);
                                cc.Load(itm);
                                cc.ExecuteQuery();

                                login = itm["UserName"].ToString();

                                if (login == null)
                                {
                                    login = itm["Name"].ToString();
                                }

                                jobPosition = item["DAIJobTitle"].ToString();

                                if (jobPosition == null)
                                {
                                    jobPosition = "empty";
                                }

                                department = item["DAIDepartment"].ToString();

                                if (department == null)
                                {
                                    department = "empty";
                                }

                                cmd.Parameters.Add("@Login", NpgsqlDbType.Text);
                                cmd.Parameters.Add("@Password", NpgsqlDbType.Text);
                                cmd.Parameters.Add("@FIO", NpgsqlDbType.Text);
                                cmd.Parameters.Add("@DeletionMark", NpgsqlDbType.Boolean);
                                cmd.Parameters.Add("@jobPosition", NpgsqlDbType.Text);
                                cmd.Parameters.Add("@Department", NpgsqlDbType.Text);

                                cmd.Parameters["@Login"].Value        = login;
                                cmd.Parameters["@Password"].Value     = "AQAAAAEAACcQAAAAEMxLaU+KB/2Daq1cjWcUEVM+mk01XyoaAO46VoDocwFobNVaCEjCzOxATCa478fQUg==";
                                cmd.Parameters["@FIO"].Value          = userValue.LookupValue;
                                cmd.Parameters["@DeletionMark"].Value = Convert.ToBoolean(itm["Attachments"]);
                                cmd.Parameters["@jobPosition"].Value  = jobPosition;
                                cmd.Parameters["@Department"].Value   = department;

                                cmd.Prepare();
                                cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();

                                //Заполнение UserRoles
                                arrayRoles = (Array)item["DAIRoles"];
                                userRole.FillUserRole(login, arrayRoles);
                                cmd.Parameters.Clear();
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                                cmd.Parameters.Clear();
                            }
                        }

                        //получение таблицы Центры результата
                        list = web.Lists.GetByTitle("Центры результата");
                        //получение полей таблицы
                        items = list.GetItems(caml);
                        cc.Load(items);

                        cc.ExecuteQuery();

                        Console.WriteLine("Заполнение данных Центры результата...");

                        cmd.CommandText = Constants.InsertResultCentres;
                        //Заполнение таблицы Центры результата
                        foreach (var item in items)
                        {
                            try
                            {
                                cmd.Parameters.Clear();
                                cmd.Parameters.Add("@Title", NpgsqlDbType.Text).Value = item["Title"];
                                cmd.Parameters.Add("@Code", NpgsqlDbType.Text).Value  = item["Code"];
                                cmd.Prepare();
                                cmd.ExecuteNonQuery();
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                            }
                        }

                        //Получение таблицы Формат ситов
                        list = web.Lists.GetByTitle("Формат ситов");

                        //Получение полей таблицы Формат ситов
                        items = list.GetItems(caml);
                        cc.Load(items);

                        cc.ExecuteQuery();

                        string DirOfFormatLogin   = string.Empty;
                        string DirOfKYFormatLogin = string.Empty;
                        string KYFormatLogin      = string.Empty;

                        Console.WriteLine("Заполнение данных Формат ситов...");

                        cmd.CommandText = Constants.InsertFormats;
                        FieldUserValue userValue1;
                        FieldUserValue userValue2;
                        FieldUserValue userValue3;

                        foreach (var item in items)
                        {
                            try
                            {
                                cmd.Parameters.Clear();
                                userValue1 = (FieldUserValue)item["SiteDirOfFormat"];
                                userValue2 = (FieldUserValue)item["SiteDirOfKYFormat"];
                                userValue3 = (FieldUserValue)item["SiteKYFormat"];

                                ListItem DirOfFormat   = userInformationList.GetItemById(userValue1.LookupId);
                                ListItem DirOfKYFormat = userInformationList.GetItemById(userValue2.LookupId);
                                ListItem KYFormat      = userInformationList.GetItemById(userValue3.LookupId);

                                cc.Load(DirOfFormat);
                                cc.Load(DirOfKYFormat);
                                cc.Load(KYFormat);

                                cc.ExecuteQuery();

                                AddUser user = new AddUser();
                                user.FillUsers(DirOfFormat, "Директор формата", "Администратор");
                                user.FillUsers(DirOfKYFormat, "Директор КУ формата", "Администратор");
                                user.FillUsers(KYFormat, "КУ формата", "Администратор");

                                DirOfFormatLogin   = DirOfFormat["UserName"].ToString();
                                DirOfKYFormatLogin = DirOfKYFormat["UserName"].ToString();
                                KYFormatLogin      = KYFormat["UserName"].ToString();

                                if (DirOfFormatLogin == null)
                                {
                                    DirOfFormatLogin = DirOfFormat["Name"].ToString();
                                }

                                if (DirOfKYFormatLogin == null)
                                {
                                    DirOfKYFormatLogin = DirOfKYFormat["Name"].ToString();
                                }

                                if (KYFormatLogin == null)
                                {
                                    KYFormatLogin = KYFormat["Name"].ToString();
                                }


                                cmd.Parameters.Add("@Title", NpgsqlDbType.Text).Value              = item["Title"].ToString();
                                cmd.Parameters.Add("@E1", NpgsqlDbType.Integer).Value              = Convert.ToDouble(item["E1Limit"]);
                                cmd.Parameters.Add("@E2", NpgsqlDbType.Integer).Value              = Convert.ToDouble(item["E2Limit"]);
                                cmd.Parameters.Add("@E3", NpgsqlDbType.Integer).Value              = Convert.ToDouble(item["E3Limit"]);
                                cmd.Parameters.Add("@TypeOfFormat", NpgsqlDbType.Text).Value       = item["KindOfFormat"].ToString();
                                cmd.Parameters.Add("@DirOfFormatLogin", NpgsqlDbType.Text).Value   = DirOfFormatLogin;
                                cmd.Parameters.Add("@DirOfKYFormatLogin", NpgsqlDbType.Text).Value = DirOfKYFormatLogin;
                                cmd.Parameters.Add("@KYFormatLogin", NpgsqlDbType.Text).Value      = KYFormatLogin;

                                cmd.ExecuteNonQuery();

                                cmd.Parameters.Clear();
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                            }
                        }

                        list  = web.Lists.GetByTitle("Ситы");
                        items = list.GetItems(caml);
                        cc.Load(items);

                        cc.ExecuteQuery();

                        cmd.CommandText = Constants.InsertSites;

                        Console.WriteLine("Заполнение данных Ситы...");

                        string SiteKYLogin;
                        string SiteTechExpLogin;
                        string SiteDirectorLogin;
                        string SiteCreaterOfBudgetLogin;
                        string SiteKYRegionalLogin;
                        string SiteOperatingDirLogin;

                        FieldUserValue   userValue4;
                        FieldUserValue   userValue5;
                        FieldUserValue   userValue6;
                        FieldLookupValue FormatLookup;

                        ListItem SiteDirector;
                        ListItem SiteKY;
                        ListItem SiteTechExp;
                        ListItem SiteKYRegional;
                        ListItem SiteOperatingDir;
                        ListItem SiteCreaterOfBudget;

                        foreach (var item in items)
                        {
                            try
                            {
                                cmd.Parameters.Clear();

                                Array KYRegional = (Array)item["SiteKYRegional"];
                                cmd.Parameters.Clear();
                                userValue1   = (FieldUserValue)item["SiteDirector"];
                                userValue2   = (FieldUserValue)item["SiteKY"];
                                userValue3   = (FieldUserValue)item["SiteTechExp"];
                                userValue4   = (FieldUserValue)KYRegional.GetValue(0);
                                userValue5   = (FieldUserValue)item["SiteOperatingDir"];
                                userValue6   = (FieldUserValue)item["SiteCreaterOfBudget"];
                                FormatLookup = (FieldLookupValue)item["FormatLookup"];

                                SiteDirector        = userInformationList.GetItemById(userValue1.LookupId);
                                SiteKY              = userInformationList.GetItemById(userValue2.LookupId);
                                SiteTechExp         = userInformationList.GetItemById(userValue3.LookupId);
                                SiteKYRegional      = userInformationList.GetItemById(userValue4.LookupId);
                                SiteOperatingDir    = userInformationList.GetItemById(userValue5.LookupId);
                                SiteCreaterOfBudget = userInformationList.GetItemById(userValue6.LookupId);

                                cc.Load(SiteDirector);
                                cc.Load(SiteKY);
                                cc.Load(SiteTechExp);
                                cc.Load(SiteKYRegional);
                                cc.Load(SiteOperatingDir);
                                cc.Load(SiteCreaterOfBudget);

                                cc.ExecuteQuery();

                                AddUser user = new AddUser();
                                user.FillUsers(SiteDirector, "Директор Сита", "Администратор");
                                user.FillUsers(SiteKY, "КУ Сита", "Администратор");
                                user.FillUsers(SiteTechExp, "Технический эксперт", "Администратор");
                                user.FillUsers(SiteKYRegional, "КУ региональный", "Администратор");
                                user.FillUsers(SiteOperatingDir, "Операционный директор", "Администратор");
                                user.FillUsers(SiteCreaterOfBudget, "Creater of Budget", "Администратор");

                                SiteKYLogin              = SiteKY["UserName"].ToString();
                                SiteTechExpLogin         = SiteTechExp["UserName"].ToString();
                                SiteDirectorLogin        = SiteDirector["UserName"].ToString();
                                SiteCreaterOfBudgetLogin = SiteCreaterOfBudget["UserName"].ToString();
                                SiteKYRegionalLogin      = SiteKYRegional["UserName"].ToString();
                                SiteOperatingDirLogin    = SiteOperatingDir["UserName"].ToString();

                                if (SiteKYLogin == null)
                                {
                                    SiteKYLogin = SiteKY["Name"].ToString();
                                }

                                if (SiteTechExpLogin == null)
                                {
                                    SiteTechExpLogin = SiteTechExp["Name"].ToString();
                                }

                                if (SiteDirectorLogin == null)
                                {
                                    SiteDirectorLogin = SiteDirector["Name"].ToString();
                                }

                                if (SiteCreaterOfBudgetLogin == null)
                                {
                                    SiteCreaterOfBudgetLogin = SiteCreaterOfBudget["Name"].ToString();
                                }

                                if (SiteKYRegionalLogin == null)
                                {
                                    SiteKYRegionalLogin = SiteKYRegional["Name"].ToString();
                                }

                                if (SiteOperatingDirLogin == null)
                                {
                                    SiteOperatingDirLogin = SiteOperatingDir["Name"].ToString();
                                }
                                if (FormatLookup.LookupValue == null || item["Title"].ToString() == null || SiteKYLogin == null || SiteTechExpLogin == null || SiteDirectorLogin == null || SiteCreaterOfBudgetLogin == null || SiteKYRegionalLogin == null || SiteOperatingDirLogin == null)
                                {
                                    Console.WriteLine("Значение - null");
                                }

                                cmd.Parameters.Add("@Title", NpgsqlDbType.Text).Value                  = item["Title"].ToString();
                                cmd.Parameters.Add("@FormatName", NpgsqlDbType.Text).Value             = FormatLookup.LookupValue.ToString();
                                cmd.Parameters.Add("@KYSiteLogin", NpgsqlDbType.Text).Value            = SiteKYLogin;
                                cmd.Parameters.Add("@TechnicalExpertLogin", NpgsqlDbType.Text).Value   = SiteTechExpLogin;
                                cmd.Parameters.Add("@DirectorOfSiteLogin", NpgsqlDbType.Text).Value    = SiteDirectorLogin;
                                cmd.Parameters.Add("@CreaterOfBudgetLogin", NpgsqlDbType.Text).Value   = SiteCreaterOfBudgetLogin;
                                cmd.Parameters.Add("@KYRegionLogin", NpgsqlDbType.Text).Value          = SiteKYRegionalLogin;
                                cmd.Parameters.Add("@OperationDirectorLogin", NpgsqlDbType.Text).Value = SiteOperatingDirLogin;

                                cmd.Prepare();
                                cmd.ExecuteNonQuery();
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                                cmd.Parameters.Clear();
                            }
                        }

                        list = web.Lists.GetByTitle("Бюджетные планы");

                        items = list.GetItems(caml);
                        cc.Load(items);

                        cc.ExecuteQuery();

                        Console.WriteLine("Заполнение данных Бюджетные планы...");

                        cmd.CommandText = Constants.InsertBudgetPlan;

                        foreach (var item in items)
                        {
                            try
                            {
                                cmd.Parameters.Clear();
                                cmd.Parameters.Add("@Year", NpgsqlDbType.Integer).Value = Convert.ToInt32(item["BudgetYear"]);
                                cmd.ExecuteNonQuery();
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                            }
                        }

                        list = web.Lists.GetByTitle("Строки бюджетного плана");

                        items = list.GetItems(caml);
                        cc.Load(items);

                        cc.ExecuteQuery();
                        double           Price = 1;
                        double           Amount;
                        int              Count = 1;
                        string           Month;
                        int              MonthId = 0;
                        FieldLookupValue BudgetLookup;
                        FieldLookupValue CategoryOfEquipment;
                        FieldLookupValue ResultCenter;
                        FieldLookupValue Site;
                        FieldLookupValue TypeOfInvestment;

                        Console.WriteLine("Заполнение данных Строки бюджетного плана...");
                        cmd.CommandText = Constants.InsertBudgetLines;

                        foreach (var item in items)
                        {
                            try
                            {
                                Month  = item["PlannedInvestmentDate"].ToString();
                                Price  = Convert.ToInt32(item["Price"]);
                                Count  = Convert.ToInt32(item["Quantity"]);
                                Amount = Price * Count;
                                switch (Month)
                                {
                                case "Январь":
                                    MonthId = 1;
                                    break;

                                case "Февраль":
                                    MonthId = 2;
                                    break;

                                case "Март":
                                    MonthId = 3;
                                    break;

                                case "Апрель":
                                    MonthId = 4;
                                    break;

                                case "Май":
                                    MonthId = 5;
                                    break;

                                case "Июнь":
                                    MonthId = 6;
                                    break;

                                case "Июль":
                                    MonthId = 7;
                                    break;

                                case "Август":
                                    MonthId = 8;
                                    break;

                                case "Сентябрь":
                                    MonthId = 9;
                                    break;

                                case "Октябрь":
                                    MonthId = 10;
                                    break;

                                case "Ноябрь":
                                    MonthId = 11;
                                    break;

                                case "Декабрь":
                                    MonthId = 12;
                                    break;

                                default: break;
                                }

                                BudgetLookup        = (FieldLookupValue)item["BudgetLookup"];
                                CategoryOfEquipment = (FieldLookupValue)item["CategoryOfEquipmentLookup"];
                                ResultCenter        = (FieldLookupValue)item["ResultCenterLookup"];
                                Site             = (FieldLookupValue)item["SiteLookup"];
                                TypeOfInvestment = (FieldLookupValue)item["TypeOfInvestmentLookup"];

                                cmd.Parameters.Clear();
                                cmd.Parameters.Add("@SubjectOfInvestment", NpgsqlDbType.Text).Value      = item["InvestmentSubject"].ToString();
                                cmd.Parameters.Add("@DateOfDelivery", NpgsqlDbType.Integer).Value        = MonthId;
                                cmd.Parameters.Add("@Count", NpgsqlDbType.Integer).Value                 = Count;
                                cmd.Parameters.Add("@Price", NpgsqlDbType.Double).Value                  = Price;
                                cmd.Parameters.Add("@Amount", NpgsqlDbType.Double).Value                 = Amount;
                                cmd.Parameters.Add("@BudgetPlanYear", NpgsqlDbType.Integer).Value        = Convert.ToInt32(BudgetLookup.LookupValue);
                                cmd.Parameters.Add("@CategoryOfEquipmentTitle", NpgsqlDbType.Text).Value = CategoryOfEquipment.LookupValue;
                                cmd.Parameters.Add("@SiteTitle", NpgsqlDbType.Text).Value                = Site.LookupValue;
                                cmd.Parameters.Add("@TypeOfInvestmentTitle", NpgsqlDbType.Text).Value    = TypeOfInvestment.LookupValue;

                                if (ResultCenter is null)
                                {
                                    cmd.Parameters.Add("@ResultCenterTitle", NpgsqlDbType.Text).Value = "empty";
                                }
                                else
                                {
                                    cmd.Parameters.Add("@ResultCenterTitle", NpgsqlDbType.Text).Value = ResultCenter.LookupValue;
                                }


                                cmd.ExecuteNonQuery();
                            }
                            catch (Exception e)
                            {
                                Console.WriteLine(e.Message);
                            }
                        }

                        //Заполнение MenuItemRoles
                        MenuItemRoles menuItemRoles = new MenuItemRoles();
                        menuItemRoles.FillMenuItemRoles();

                        //Заполнение RolesObjectTypes
                        RolesObjectTypes rolesObjectTypes = new RolesObjectTypes();
                        rolesObjectTypes.FillRolesObjectTypes();

                        //Заполнение ObjectPermission
                        cmd.CommandText = Constants.InsertObjectPermissions;
                        cmd.ExecuteNonQuery();

                        connection.Close();
                        Console.WriteLine("Заполнение окончено");
                        Console.ReadLine();
                    }
            }
        }