protected override void GetModelsForOperationOptions <TObject, TModelForGet>(ref TObject modelParam, TModelForGet modelForGet)
        {
            AddOperationModel model = modelParam as AddOperationModel;
            ModelsForPersonalOperationModel operModel = modelForGet as ModelsForPersonalOperationModel;

            if (model != null && operModel != null)
            {
                operModel.CurrencyModel = _currencyManager.GetCurrencyWithCurrentName(model.Currency);
                operModel.CategoryModel = _categoryManager.GetCategoryWithCurrentName(model.Category,
                                                                                      operModel.OperationType);
                operModel.SourceModel = _sourceManager.GetCategoryWithCurrentName(model.Source);
            }
        }
        public override bool addNewOperation <TObject>(TObject modelParam, string userName)
        {
            AddOperationModel model = modelParam as AddOperationModel;

            if (model != null && model != null && ValidationManager.modelIsValid(model))
            {
                DBModelManagers.Abstract.OperationType operationType = model.IsAddOperation ?
                                                                       DBModelManagers.Abstract.OperationType.Income : DBModelManagers.Abstract.OperationType.Outcome;

                ModelsForPersonalOperationModel modelForOperation = new ModelsForPersonalOperationModel
                {
                    CategoryModel = new NameIdClassModel(),
                    CurrencyModel = new CurrencyNameIdRateClass(),
                    OperationType = operationType,
                    SourceModel   = new NameIdClassModel()
                };
                GetModelsForOperationOptions(ref model, modelForOperation);

                Operation newOperation = new Operation()
                {
                    Summ       = Convert.ToDecimal(model.Summ),
                    Date       = model.Date,
                    Commentary = model.Commentary
                };
                PersonalAccountForeignKeyForSetModels fKModel = new PersonalAccountForeignKeyForSetModels
                {
                    CurrencyModel = modelForOperation.CurrencyModel,
                    CategoryModel = modelForOperation.CategoryModel,
                    SourceModel   = modelForOperation.SourceModel,
                    UserId        = userName,
                    OperationType = operationType
                };
                SetIdForForeignKeys(fKModel, DIManager.UnitOfWork, ref newOperation);


                return(AddOperationToDB(newOperation, model.Template));
            }
            return(false);
        }