Ejemplo n.º 1
0
        public static void LoadOperations()
        {
            OperationMapper.Update(User, OperationsGroups, Importances, Frequencies, TransactionTypes, TransferTypes);
            Operations = OperationMapper.ConvertToBusinessLogicEntitiesCollection(OperationAdapter.GetAll($"user_id={User.Id}")).ToList();

            if (Operations.Count > 0)
            {
                var filter = "";
                foreach (var operation in Operations)
                {
                    filter += $"operation_id={operation.Id} OR ";
                }
                filter = filter.Substring(0, filter.Length - 4);

                RelationMapper.Update(Operations, Tags);
                var relations     = RelationMapper.ConvertToBusinessLogicEntitiesCollection(OperationTagRelationAdapter.GetAll(filter));
                var relTags       = relations.Item1;
                var relOperations = relations.Item2;

                foreach (var operation in Operations)
                {
                    operation.SetDetailsList(OperationDetailsMapper.ConvertToBusinessLogicEntitiesCollection(OperationDetailsAdapter.GetAll($"operation_id={operation.Id}")));
                    operation.SetTags(relTags.Where(r => r.RelatedId == operation.Id));
                }

                foreach (var tag in Tags)
                {
                    tag.SetOperations(relOperations.Where(r => r.TagId == tag.Id));
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <OperationDto> > GetById(int id)
        {
            Operation operation = await operationService.GetById(id);

            if (operation == null)
            {
                logger.Debug($"Could not find operation id {id}.");
                return(NotFound());
            }

            return(Ok(OperationMapper.Map(operation)));
        }
Ejemplo n.º 3
0
        public async Task <ActionResult <OperationDto> > Sub(SubtractionDto subDto)
        {
            try
            {
                Operation operation = await operationService.Sub(subDto.OperationId, subDto.Minuend, subDto.Subtrahend);

                return(Ok(OperationMapper.Map(operation)));
            }
            catch (Exception ex)
            {
                logger.Error(ex, ex.Message);
                return(Problem("There was a problem processing your request", statusCode: (int?)HttpStatusCode.InternalServerError));
            }
        }
Ejemplo n.º 4
0
        public ApiAdapter(IDataBaseManagerFactory dbEngine, string address, string port, string table, string login, string password)
        {
            DbManager   = new DatabaseManager(dbEngine, address, port, table, login, password);
            DbConnector = new DbConnector(DbManager);

            LanguageAdapter                = new LanguageAdapter(DbConnector);
            UserAdapter                    = new UserAdapter(DbConnector);
            UserDetailsAdapter             = new UserDetailsAdapter(DbConnector);
            TransactionTypeAdapter         = new TransactionTypeAdapter(DbConnector);
            TransferTypeAdapter            = new TransferTypeAdapter(DbConnector);
            FrequencyAdapter               = new FrequencyAdapter(DbConnector);
            ImportanceAdapter              = new ImportanceAdapter(DbConnector);
            TagAdapter                     = new TagAdapter(DbConnector);
            OperationAdapter               = new OperationAdapter(DbConnector);
            OperationDetailsAdapter        = new OperationDetailsAdapter(DbConnector);
            OperationTagRelationAdapter    = new OperationTagAdapter(DbConnector);
            OperationsGroupAdapter         = new OperationsGroupAdapter(DbConnector);
            OperationsGroupRelationAdapter = new OperationsGroupTagAdapter(DbConnector);
            FilterAdapter                  = new FilterAdapter(DbConnector);
            DashboardAdapter               = new DashboardAdapter(DbConnector);
            DashboardFilterRelationAdapter = new DashboardFilterRelationAdapter(DbConnector);
            BankAdapter                    = new BankAdapter(DbConnector);
            SettingsAdapter                = new SettingsAdapter(DbConnector);
            SchematicTypeAdapter           = new SchematicTypeAdapter(DbConnector);
            SchematicAdapter               = new SchematicAdapter(DbConnector);

            LanguageMapper        = new LanguageMapper();
            UserMapper            = new UserMapper();
            UserDetailsMapper     = new UserDetailsMapper();
            TransactionTypeMapper = new TransactionTypeMapper();
            TransferTypeMapper    = new TransferTypeMapper();
            FrequencyMapper       = new FrequencyMapper();
            ImportanceMapper      = new ImportanceMapper();
            TagMapper             = new TagMapper();
            TagRelationMapper     = new RelationTagMapper();
            OperationMapper       = new OperationMapper();
            OperationsGroupMapper = new OperationsGroupMapper();
            FilterMapper          = new FilterMapper();
            DashboardMapper       = new DashboardMapper();
            DashboardFilterMapper = new DashboardFilterMapper();
            BankMapper            = new BankMapper();
            SettingsMapper        = new SettingsMapper();
            SchematicTypeMapper   = new SchematicTypeMapper();
            SchematicMapper       = new SchematicMapper();
        }
Ejemplo n.º 5
0
        public async Task <ActionResult <OperationDto> > Mult(MultiplyDto multiplyDto)
        {
            if (multiplyDto.Factors.Count < 2)
            {
                return(BadRequest(new { Message = "At least 2 parameters must be specified for this operation." }));
            }
            try
            {
                Operation operation = await operationService.Mult(multiplyDto.OperationId, multiplyDto.Factors);

                return(Ok(OperationMapper.Map(operation)));
            }
            catch (Exception ex)
            {
                logger.Error(ex, ex.Message);
                return(Problem("There was a problem processing your request", statusCode: (int?)HttpStatusCode.InternalServerError));
            }
        }
Ejemplo n.º 6
0
        public async Task <ActionResult <OperationDto> > Div(DivisionDto divisionDto)
        {
            if (divisionDto.Divisor == 0)
            {
                return(BadRequest(new { Message = "Can not divide by 0." }));
            }
            try
            {
                Operation operation = await operationService.Div(divisionDto.OperationId, divisionDto.Dividend, divisionDto.Divisor);

                return(Ok(OperationMapper.Map(operation)));
            }
            catch (Exception ex)
            {
                logger.Error(ex, ex.Message);
                return(Problem("There was a problem processing your request", statusCode: (int?)HttpStatusCode.InternalServerError));
            }
        }
Ejemplo n.º 7
0
        public void MapOperationTest()
        {
            var dbOperation = new Operation
            {
                CalculatorId  = 123,
                FirstNumber   = 77,
                SecondNumber  = 11,
                OperationType = 0,
                OperationId   = 423
            };
            var mapper = new OperationMapper();
            var result = mapper.Map(dbOperation);

            Assert.AreEqual(result.CalculatorId, 123);
            Assert.AreEqual(result.FirstNumber, 77);
            Assert.AreEqual(result.SecondNumber, 11);
            Assert.AreEqual(result.OperationType, OperationType.Addition);
            Assert.AreEqual(result.OperationId, 423);
        }
Ejemplo n.º 8
0
        public List <ApiOperation> GetOperations(ApiUser user, List <ApiTransactionType> transactionTypes, List <ApiTransferType> transferTypes, List <ApiFrequency> frequencies, List <ApiImportance> importances, List <ApiTag> tags)
        {
            var operations = OperationAdapter.GetAll($"user_id={user.Id}");
            var filter     = "";

            foreach (var operation in operations)
            {
                filter += $"operation_id={operation.Id} OR ";
            }
            if (filter.Length > 4)
            {
                filter = filter.Substring(0, filter.Length - 4);
            }

            var relations = OperationTagRelationAdapter.GetAll(filter).ToList();
            var details   = OperationDetailsAdapter.GetAll(filter).ToList();

            OperationMapper.Update(importances, frequencies, transactionTypes, transferTypes, tags, user, relations, details);

            return(OperationMapper.ConvertToApiEntitiesCollection(operations).ToList());
        }
Ejemplo n.º 9
0
        public static void SetService()
        {
            Settings = new Settings2();

            var dataBaseData = ConfigurationManager.DataBaseData();

            DbManager   = new DatabaseManager(new MySqlConnectionFactory(), dataBaseData.Address, dataBaseData.Port, dataBaseData.Table, dataBaseData.Login, dataBaseData.Password);
            DbConnector = new DbConnector(DbManager);

            LanguageAdapter                = new LanguageAdapter(DbConnector);
            UserAdapter                    = new UserAdapter(DbConnector);
            UserDetailsAdapter             = new UserDetailsAdapter(DbConnector);
            TransactionTypeAdapter         = new TransactionTypeAdapter(DbConnector);
            TransferTypeAdapter            = new TransferTypeAdapter(DbConnector);
            FrequencyAdapter               = new FrequencyAdapter(DbConnector);
            ImportanceAdapter              = new ImportanceAdapter(DbConnector);
            TagAdapter                     = new TagAdapter(DbConnector);
            OperationAdapter               = new OperationAdapter(DbConnector);
            OperationDetailsAdapter        = new OperationDetailsAdapter(DbConnector);
            OperationTagRelationAdapter    = new OperationTagAdapter(DbConnector);
            OperationsGroupAdapter         = new OperationsGroupAdapter(DbConnector);
            OperationsGroupRelationAdapter = new OperationsGroupTagAdapter(DbConnector);

            LanguageMapper                = new LanguageMapper();
            UserMapper                    = new UserMapper();
            UserDetailsMapper             = new UserDetailsMapper();
            TransactionTypeMapper         = new TransactionTypeMapper();
            TransferTypeMapper            = new TransferTypeMapper();
            FrequencyMapper               = new FrequencyMapper();
            ImportanceMapper              = new ImportanceMapper();
            TagMapper                     = new TagMapper();
            OperationMapper               = new OperationMapper();
            OperationDetailsMapper        = new OperationDetailsMapper();
            RelationMapper                = new RelationMapper();
            OperationsGroupMapper         = new OperationsGroupMapper();
            OperationsGroupRelationMapper = new OperationsGroupRelationMapper();

            SetMainConfigurations();
        }
Ejemplo n.º 10
0
        public void UpdateOperationComplex(ApiOperation newOperation)
        {
            var dalObjects = OperationMapper.ConvertToDALEntity(newOperation);

            UpdateOperationComplex(dalObjects);
        }
Ejemplo n.º 11
0
        public object OnRequest(IRequest request)
        {
            IDBOperation  dbOperation   = null;
            IDBResponse   response      = null;
            RequestParser requestParser = null;

            try
            {
                requestParser = request as RequestParser;
                try
                {
                    dbOperation = requestParser.ParseRequest();
                }
                catch (Exception ex)
                {
                    if (LoggerManager.Instance.ShardLogger != null && LoggerManager.Instance.ShardLogger.IsErrorEnabled)
                    {
                        LoggerManager.Instance.ShardLogger.Error("Error: ClientMgr.OnRequest() On Parse Request", ex.ToString());
                    }
                    throw;
                }

                if (dbOperation == null)
                {
                    throw new NullReferenceException("Database Operation");
                }

                if (_shardName != null && _statsCollector == null)
                {
                    _statsCollector = StatsManager.Instance.GetStatsCollector(new StatsIdentity(_shardName, dbOperation.Database));
                }

                //Dispose Reader check is a temporary fix for Single Get Operation.
                if (dbOperation.OperationType != DatabaseOperationType.DisposeReader && _statsCollector != null)
                {
                    _statsCollector.IncrementStatsValue(StatisticsType.RequestsPerSec);
                }

                //TODO: when SessionId will be embedded into command from router, this code needs to be removed
                //if (dbOperation.SessionId == null)
                //    dbOperation.SessionId = new RouterSessionId();
                //dbOperation.SessionId = SessionId;

                //if (_dbEngine == null)
                //    throw new NullReferenceException("DBEngine (Client Manager)");

                //LoggerManager.Instance.SetThreadContext(new LoggerContext { ShardName = ((DataBaseEngine)DbEngine).NodeContext.LocalShardName, DatabaseName = dbOperation.Database });
                switch (dbOperation.OperationType)
                {
                case DatabaseOperationType.Init:
                    response = _dbEngine.InitializeDatabase((InitDatabaseOperation)dbOperation);
                    if (response.IsSuccessfull)
                    {
                        _database = dbOperation.Database;
                    }
                    break;

                case DatabaseOperationType.Insert:

                    response = _dbEngine.InsertDocuments((InsertDocumentsOperation)dbOperation);
                    break;

                case DatabaseOperationType.Delete:

                    response = _dbEngine.DeleteDocuments((DeleteDocumentsOperation)dbOperation);
                    break;

                case DatabaseOperationType.Get:

                    response = _dbEngine.GetDocuments((GetDocumentsOperation)dbOperation);
                    if (response != null && response.IsSuccessfull)
                    {
                        var getResponse = (GetDocumentsResponse)response;
                        if (!getResponse.DataChunk.IsLastChunk)
                        {
                            var readerInfo = new ReaderInfo
                            {
                                DatabaseName   = dbOperation.Database,
                                CollectionName = dbOperation.Collection,
                                ReaderId       = getResponse.DataChunk.ReaderUID
                            };
                            lock (_readersList)
                            {
                                _readersList.Add(readerInfo);
                            }
                        }
                    }
                    break;

                case DatabaseOperationType.Update:

                    response = _dbEngine.UpdateDocuments((UpdateOperation)dbOperation);
                    break;

                case DatabaseOperationType.Replace:
                    response = _dbEngine.ReplaceDocuments((IDocumentsWriteOperation)dbOperation);
                    break;

                case DatabaseOperationType.ReadQuery:

                    response = _dbEngine.ExecuteReader((ReadQueryOperation)dbOperation);
                    if (response != null && response.IsSuccessfull)
                    {
                        var readQueryResponse = (ReadQueryResponse)response;
                        if (!readQueryResponse.DataChunk.IsLastChunk)
                        {
                            var readerInfo = new ReaderInfo
                            {
                                DatabaseName   = dbOperation.Database,
                                CollectionName = dbOperation.Collection,
                                ReaderId       = readQueryResponse.DataChunk.ReaderUID
                            };
                            lock (_readersList)
                            {
                                _readersList.Add(readerInfo);
                            }
                        }
                    }
                    break;

                case DatabaseOperationType.WriteQuery:

                    response = _dbEngine.ExecuteNonQuery((WriteQueryOperation)dbOperation);
                    break;

                case DatabaseOperationType.CreateSession:
                    break;

                case DatabaseOperationType.GetChunk:

                    response = _dbEngine.GetDataChunk((GetChunkOperation)dbOperation);
                    break;

                case DatabaseOperationType.DisposeReader:

                    var disposeReaderOperation = (DisposeReaderOperation)dbOperation;
                    response = _dbEngine.DiposeReader(disposeReaderOperation);
                    if (response != null && response.IsSuccessfull)
                    {
                        lock (_readersList)
                        {
                            _readersList.RemoveAll(
                                x =>
                                x.CollectionName == disposeReaderOperation.Collection &&
                                x.DatabaseName == disposeReaderOperation.Database &&
                                x.ReaderId == disposeReaderOperation.ReaderUID);
                        }
                    }
                    break;

                case DatabaseOperationType.Authenticate:

                    var authenticationOperation = (AuthenticationOperation)dbOperation;
                    _noSConnectionString = new ConnectionStringBuilder(authenticationOperation.ConnectionString);
                    _dbEngine            = _databaseEngineFactory.GetDatabaseEngine(_noSConnectionString);

                    authenticationOperation.Address = ServerChannel.PeerAddress;
                    response = _dbEngine.Authenticate(authenticationOperation);
                    AuthenticationResponse authResponse = response as AuthenticationResponse;
                    if (
                        !(authResponse.ServerToken.Status == Common.Security.SSPI.SecurityStatus.SecurityDisabled ||
                          authResponse.ServerToken.Status == Common.Security.SSPI.SecurityStatus.ContinueNeeded ||
                          authResponse.ServerToken.Status == Common.Security.SSPI.SecurityStatus.OK))
                    {
                        this.ChannelDisconnected(_serverChannel, "unauthenticated");
                    }
                    else
                    {
                        CsSessionId      = dbOperation.SessionId;
                        _clientProcessID = authenticationOperation.ClientProcessID;
                    }
                    break;

                default:
                    throw new Exception("Invalid Operation");
                }
            }
            catch (SerializationException se)
            {
                try
                {
                    if (requestParser == null)
                    {
                        requestParser = request.Message as RequestParser;
                    }

                    response = OperationMapper.GetResponse(requestParser.OperationType);
                    response.IsSuccessfull = false;
                    response.RequestId     = requestParser.RequestId;
                    response.ErrorCode     = se.ErrorCode != 0 ? se.ErrorCode : ErrorCodes.Cluster.UNKNOWN_ISSUE;
                    response.ErrorParams   = se.Parameters;
                }
                catch (Exception)
                {
                    //Create response if exception occurs.
                    if (dbOperation != null)
                    {
                        response = dbOperation.CreateResponse();
                    }
                    response.ErrorCode = ErrorCodes.Cluster.UNKNOWN_ISSUE;
                }
                if (LoggerManager.Instance.ShardLogger != null && LoggerManager.Instance.ShardLogger.IsErrorEnabled)
                {
                    LoggerManager.Instance.ShardLogger.Error("Error: ClientMgr.OnRequest()", se.ToString());
                }
            }
            catch (DatabaseException de)
            {
                if (dbOperation != null)
                {
                    response = dbOperation.CreateResponse();
                }
                if (response != null)
                {
                    response.IsSuccessfull = false;
                    response.ErrorCode     = de.ErrorCode != 0 ? de.ErrorCode : ErrorCodes.Cluster.UNKNOWN_ISSUE;
                    response.ErrorParams   = de.Parameters;
                }
            }
            catch (ManagementException me)
            {
                if (dbOperation != null)
                {
                    response = dbOperation.CreateResponse();
                }
                if (response != null)
                {
                    response.IsSuccessfull = false;
                    if (me.IsErrorCodeSpecified)
                    {
                        response.ErrorCode   = me.ErrorCode;
                        response.ErrorParams = me.Parameters;
                    }
                }
            }
            catch (Exception e)
            {
                if (LoggerManager.Instance.ShardLogger != null && LoggerManager.Instance.ShardLogger.IsErrorEnabled)
                {
                    LoggerManager.Instance.ShardLogger.Error("Error: ClientMgr.OnRequest()",
                                                             e.Message + " StackTrace:" + e.StackTrace);
                }

                if (dbOperation != null)
                {
                    response = dbOperation.CreateResponse();
                }
                if (response != null)
                {
                    response.IsSuccessfull = false;
                    response.ErrorCode     = ErrorCodes.Cluster.UNKNOWN_ISSUE;
                }
            }

            finally
            {
                try
                {
                    if (request.Channel.Connected)
                    {
                        request.Channel.SendMessage(response);
                    }
                }
                catch (ChannelException e)
                {
                    if (LoggerManager.Instance.ShardLogger != null && LoggerManager.Instance.ShardLogger.IsErrorEnabled)
                    {
                        LoggerManager.Instance.ShardLogger.Error("Error: ClientMgr.OnRequest()", e.ToString());
                    }
                }
                catch (Exception ex)
                {
                    if (LoggerManager.Instance.ShardLogger != null && LoggerManager.Instance.ShardLogger.IsErrorEnabled)
                    {
                        LoggerManager.Instance.ShardLogger.Error("Error: Exception on ClientMgr.OnRequest()", ex.ToString());
                    }
                }
            }

            return(null);
        }
Ejemplo n.º 12
0
 public OperationService()
 {
     operationRepository = OperationRepository.GetInstance();
     operationMapper     = new OperationMapper();
     medicineService     = new MedicineService();
 }