예제 #1
0
        public string createNewRecording(string nameServer, string user, AccrualPayment[] accrualsPayments)
        {
            // Получить список идентификаторов приложений с указанного центрального ИнМета-сервера.
            string[] idAppCentralServer = DataApplication.GetAppIds(nameServer);

            DataApplication app;

            if (idAppCentralServer.Contains("EstateOrenburg"))
            {
                app = new DataApplication(idAppCentralServer[0], nameServer);
            }
            else
            {
                app = null; return("Create application failure");
            }


            // Создание сессии (подключение к БД)
            DataSession session = app.CreateSession(user);
            //DataSession session = app.CreateSession();
            //session.Db.BeginTransaction("","");

            // Прописываем свойства, которые нам необходимо прогрузить при первом запросе
            string loadPlan = "<Executor/>";

            Dictionary <string, List <string> > dictMappingOIDwithPersonalAccount = getMappingOIDwithPersonalAccount();


            for (int i = 0; i < accrualsPayments.Length; i++)
            {
                if (dictMappingOIDwithPersonalAccount.ContainsKey(accrualsPayments[i].PersonalAccount))
                {
                    accrualsPayments[i].OIDobject = dictMappingOIDwithPersonalAccount[accrualsPayments[i].PersonalAccount][0];


                    // Получение списка объектов
                    DataObjectList rentApartContrProc;

                    if (session != null)
                    {
                        DataStorage dataStorage = session["Constr/RentPrivatizationApartmentContractProcess"];
                        rentApartContrProc = dataStorage.Query(loadPlan, "OID=?", accrualsPayments[i].OIDobject); // 000859F5EC33
                    }
                    else
                    {
                        return("Create session failure");
                    }

                    // Создание нового объекта
                    //session["Constr/AccrualsPaymentsSocialContract"].AddNew();

                    foreach (Integro.InMeta.Runtime.DataObject racp in rentApartContrProc)
                    {
                        //// Чтение свойств объекта
                        //racp.GetString("ContractNo", "No date");
                        //racp.GetDateTime("ContractDate");

                        ////Запись свойств объекта
                        //racp.SetString("ContractNo", "xxx");
                        //racp.SetDateTime("ContractDate", DateTime.Today);

                        // Добавлению нового дочернего объекта
                        DataObject          accrualsPaymentsSocialContract = racp.GetChilds("Constr/AccrualsPaymentsSocialContract").AddNew();
                        DataObjectChildList employers      = racp.GetChilds("Constr/Employers");
                        DataObject          searchEmployer = null;

                        foreach (DataObject employer in employers)
                        {
                            if (employer.GetString("PersonalAccount").Equals(accrualsPayments[i].PersonalAccount))
                            {
                                searchEmployer = employer;
                                break;
                            }
                        }

                        if (searchEmployer != null)
                        {
                            accrualsPaymentsSocialContract.SetLink("Subject", searchEmployer);
                        }

                        // var dateTime2 = DateTime.ParseExact(accrualsPayments[i].DateAccrual, "dd.M.yyyy", null);

                        string[] periodStr = accrualsPayments[i].Period.Split('.');
                        DateTime period    = new DateTime(Convert.ToInt32(periodStr[0]), Convert.ToInt32(periodStr[1]), Convert.ToInt32(periodStr[2]));

                        accrualsPaymentsSocialContract.SetString("PersonalAccount", accrualsPayments[i].PersonalAccount ?? String.Empty);
                        accrualsPaymentsSocialContract.SetString("IdAccrual", accrualsPayments[i].IdAccrual ?? String.Empty);
                        accrualsPaymentsSocialContract.SetDateTime("Period", period);
                        accrualsPaymentsSocialContract.SetDouble("Accrual", Convert.ToDouble(accrualsPayments[i].SummAccrual ?? String.Empty));
                        accrualsPaymentsSocialContract.SetDouble("SummPayment", Convert.ToDouble(accrualsPayments[i].SummPayment ?? String.Empty));
                    }
                }
                else
                {
                    accrualsPayments[i].OIDobject = "Not Found";
                }
            }
            //Сохранение объектов в БД
            session.Commit();

            //Запись не найденых ЛС
            writeInFile(accrualsPayments);

            return("Upload successful");
        }