Esempio n. 1
0
        /// <summary>
        /// Сохранение сущности в RX.
        /// </summary>
        /// <param name="shift">Сдвиг по горизонтали в XLSX документе. Необходим для обработки документов, составленных из элементов разных сущностей.</param>
        /// <param name="logger">Логировщик.</param>
        /// <returns>Число запрашиваемых параметров.</returns>
        public override IEnumerable <Structures.ExceptionsStruct> SaveToRX(NLog.Logger logger, bool supplementEntity, int shift = 0)
        {
            var exceptionList = new List <Structures.ExceptionsStruct>();

            using (var session = new Session())
            {
                var name = this.Parameters[shift + 0].Trim();
                if (string.IsNullOrEmpty(name))
                {
                    var message = string.Format("Не заполнено поле \"Наименование\".");
                    exceptionList.Add(new Structures.ExceptionsStruct {
                        ErrorType = Constants.ErrorTypes.Error, Message = message
                    });
                    logger.Error(message);
                    return(exceptionList);
                }
                var shortName  = this.Parameters[shift + 1].Trim();
                var headOffice = BusinessLogic.GetDepartment(session, this.Parameters[shift + 2].Trim(), exceptionList, logger);
                if (!string.IsNullOrEmpty(this.Parameters[shift + 2].Trim()) && headOffice == null)
                {
                    headOffice = BusinessLogic.CreateDepartment(session, this.Parameters[shift + 2].Trim(), exceptionList, logger);
                    //var message = string.Format("Не найдено Головное подразделение \"{1}\". Наименование подразделения: \"{0}\". ", name, this.Parameters[shift + 2].Trim());
                    //exceptionList.Add(new Structures.ExceptionsStruct { ErrorType = Constants.ErrorTypes.Warn, Message = message });
                    //logger.Warn(message);
                }
                var businessUnit = BusinessLogic.GetBusinessUnit(session, this.Parameters[shift + 3].Trim(), exceptionList, logger);
                if (!string.IsNullOrEmpty(this.Parameters[shift + 3].Trim()) && businessUnit == null)
                {
                    var message = string.Format("Не найдена НОР \"{1}\". Наименование подразделения: \"{0}\". ", name, this.Parameters[shift + 3].Trim());
                    exceptionList.Add(new Structures.ExceptionsStruct {
                        ErrorType = Constants.ErrorTypes.Warn, Message = message
                    });
                    logger.Warn(message);
                }
                var code    = this.Parameters[shift + 4].Trim();
                var manager = BusinessLogic.GetEmployee(session, this.Parameters[shift + 5].Trim(), exceptionList, logger);
                if (!string.IsNullOrEmpty(this.Parameters[shift + 5].Trim()) && manager == null)
                {
                    var message = string.Format("Не найден Руководитель \"{1}\". Наименование подразделения: \"{0}\". ", name, this.Parameters[shift + 5].Trim());
                    exceptionList.Add(new Structures.ExceptionsStruct {
                        ErrorType = Constants.ErrorTypes.Warn, Message = message
                    });
                    logger.Warn(message);
                }
                var phone = this.Parameters[shift + 6].Trim();
                var note  = this.Parameters[shift + 7].Trim();

                try
                {
                    // Проверка кода подразделения.
                    var resultCodeDepartment = BusinessLogic.CheckCodeDepartmentLength(code);
                    if (!string.IsNullOrEmpty(resultCodeDepartment))
                    {
                        var message = string.Format("Компания не может быть импортирована. Некорректный код подразделения. Наименование: \"{0}\", ИНН: {1}. {2}", name, code, resultCodeDepartment);
                        exceptionList.Add(new Structures.ExceptionsStruct {
                            ErrorType = Constants.ErrorTypes.Error, Message = message
                        });
                        logger.Error(message);
                        return(exceptionList);
                    }

                    var departments = Enumerable.ToList(session.GetAll <Sungero.Company.IDepartment>().Where(x => x.Name == name));
                    var department  = (Enumerable.FirstOrDefault <Sungero.Company.IDepartment>(departments));
                    if (department == null)
                    {
                        department = session.Create <Sungero.Company.IDepartment>();
                    }

                    department.Name         = name;
                    department.ShortName    = shortName;
                    department.Code         = code;
                    department.BusinessUnit = businessUnit;
                    department.HeadOffice   = headOffice;
                    department.Manager      = manager;
                    department.Phone        = phone;
                    department.Note         = note;
                    department.Save();
                }
                catch (Exception ex)
                {
                    exceptionList.Add(new Structures.ExceptionsStruct {
                        ErrorType = "Error", Message = ex.Message
                    });
                    return(exceptionList);
                }
                session.SubmitChanges();
            }
            return(exceptionList);
        }
Esempio n. 2
0
        /// <summary>
        /// Сохранение сущности в RX.
        /// </summary>
        /// <param name="shift">Сдвиг по горизонтали в XLSX документе. Необходим для обработки документов, составленных из элементов разных сущностей.</param>
        /// <param name="logger">Логировщик.</param>
        /// <returns>Число запрашиваемых параметров.</returns>
        public override IEnumerable <Structures.ExceptionsStruct> SaveToRX(NLog.Logger logger, bool supplementEntity, int shift = 0)
        {
            var exceptionList = new List <Structures.ExceptionsStruct>();

            exceptionList.AddRange(base.SaveToRX(logger, supplementEntity, 2));

            using (var session = new Session())
            {
                var lastName = this.Parameters[shift + 2].Trim();
                if (string.IsNullOrEmpty(lastName))
                {
                    var message = string.Format("Не заполнено поле \"Фамилия\".");
                    exceptionList.Add(new Structures.ExceptionsStruct {
                        ErrorType = Constants.ErrorTypes.Error, Message = message
                    });
                    logger.Error(message);
                    return(exceptionList);
                }
                var firstName = this.Parameters[shift + 3].Trim();
                if (string.IsNullOrEmpty(firstName))
                {
                    var message = string.Format("Не заполнено поле \"Имя\".");
                    exceptionList.Add(new Structures.ExceptionsStruct {
                        ErrorType = Constants.ErrorTypes.Error, Message = message
                    });
                    logger.Error(message);
                    return(exceptionList);
                }
                var middleName = this.Parameters[shift + 4].Trim();
                var person     = BusinessLogic.GetPerson(session, lastName, firstName, middleName, exceptionList, logger);
                if (person == null)
                {
                    var message = string.Format("Не удалось создать персону \"{0} {1} {2}\".", lastName, firstName, middleName);
                    exceptionList.Add(new Structures.ExceptionsStruct {
                        ErrorType = Constants.ErrorTypes.Error, Message = message
                    });
                    logger.Error(message);
                    return(exceptionList);
                }
                var name       = person.Name;
                var department = BusinessLogic.GetDepartment(session, this.Parameters[shift + 0].Trim(), exceptionList, logger);
                if (department == null && !string.IsNullOrEmpty(this.Parameters[shift + 0].Trim()))
                {
                    department = BusinessLogic.CreateDepartment(session, this.Parameters[shift + 0].Trim(), exceptionList, logger);
                    //var message = string.Format("Не на найдено подразделение \"{0}\".", this.Parameters[shift + 0].Trim());
                    //exceptionList.Add(new Structures.ExceptionsStruct {ErrorType = Constants.ErrorTypes.Error, Message = message});
                    //logger.Error(message);
                    //return exceptionList;
                }
                var jobTitle = BusinessLogic.GetJobTitle(session, this.Parameters[shift + 1].Trim(), exceptionList, logger);
                if (jobTitle == null && !string.IsNullOrEmpty(this.Parameters[shift + 1].Trim()))
                {
                    jobTitle = BusinessLogic.CreateJobTitle(session, this.Parameters[shift + 1].Trim(), exceptionList, logger);
                }
                var email = this.Parameters[shift + 14].Trim();
                var phone = this.Parameters[shift + 13].Trim();
                var note  = this.Parameters[shift + 18].Trim();

                try
                {
                    var employees = Enumerable.ToList(session.GetAll <Sungero.Company.IEmployee>().Where(x => x.Name == name));
                    var employee  = (Enumerable.FirstOrDefault <Sungero.Company.IEmployee>(employees));
                    if (employee != null)
                    {
                        var message = string.Format("Сотрудник не может быть импортирован. Найден дубль \"{0}\".", name);
                        exceptionList.Add(new Structures.ExceptionsStruct {
                            ErrorType = Constants.ErrorTypes.Error, Message = message
                        });
                        logger.Error(message);
                        return(exceptionList);
                    }
                    employee            = session.Create <Sungero.Company.IEmployee>();
                    employee.Name       = name;
                    employee.Person     = person;
                    employee.Department = department;
                    employee.JobTitle   = jobTitle;
                    employee.Email      = email;
                    employee.Phone      = phone;
                    employee.Note       = note;
                    employee.NeedNotifyExpiredAssignments = false;
                    employee.NeedNotifyNewAssignments     = false;
                    employee.Save();
                }
                catch (Exception ex)
                {
                    exceptionList.Add(new Structures.ExceptionsStruct {
                        ErrorType = "Error", Message = ex.Message
                    });
                    return(exceptionList);
                }
                session.SubmitChanges();
            }
            return(exceptionList);
        }