public Gateway1Simulator(
            IRedGreenQueueAdapter redq,
            IOptions <Gateway1SimulatorOptions> options,
            ILogger <Gateway1Simulator> logger,
            IGatewayApi gatewayApi,
            IEntityApi entityApi,
            TagReadsSync tagReadsSync,
            DeviceStatusSync devicestatusSync,
            RNCHeartbeatSync RNCHeartbeatSync,
            UnreadRFIDSync unreadRFIDSync,
            KeyFrameSync keyFrameSync,
            LoggerX loggerX
            )
        {
            _entityApi  = entityApi ?? throw new ArgumentNullException(nameof(entityApi));
            _gatewayApi = gatewayApi ?? throw new ArgumentNullException(nameof(gatewayApi));
            _redq       = redq ?? throw new ArgumentNullException(nameof(redq));
            _logger     = logger ?? throw new ArgumentNullException(nameof(logger));
            _options    = options ?? throw new ArgumentException(nameof(options));

            if (options.Value.Active)
            {
                logger.LogInformation("GATEWAY.1 simulator active");
            }

            //Init all Innotrack Sync Classes
            _tagReadsSync     = tagReadsSync;
            _devicestatusSync = devicestatusSync;
            _RNCHeartbeatSync = RNCHeartbeatSync;
            _unreadRFIDSync   = unreadRFIDSync;
            _keyFrameSync     = keyFrameSync;
            LoggerX           = loggerX;

            RunIntegration();
        }
Пример #2
0
        public async Task StartDeviceStatus()
        {
            while (true)
            {
                try
                {
                    await  UpdateLastCheckedLog(InterfaceType.deviceheartbeat);
                    await RefreshDeviceStatusList();

                    var lst = new List <(string, string, object)>();
                    foreach (var device in Devices)
                    {
                        //if (device.Status != "Active")
                        //    continue;
                        //Add Heartbeat of device and send
                        var _iotObject = new IotObject();
                        //_iotObject.Device = device;
                        _iotObject.DeviceName = device.DeviceName;
                        _iotObject.DeviceType = "DEVICE";
                        _iotObject.ObjectType = "HEARTBEAT";
                        _iotObject.Object     = device.Status == "Active" ? 1 : 0;
                        lst.Add(_iotObject.ToString());
                        //Send list to Iot Cloud Platform
                    }
                    await SendNotification(lst);
                    await UpdateLastUpdatedLog(InterfaceType.deviceheartbeat);
                }
                catch (Exception ex)
                {
                    LoggerX.WriteErrorLog(ex);
                    _logger.LogError(ex, $"Sending notification for gateway {IotGateway.GatewayId}");
                }
                await Task.Delay(IotGateway.DeviceHeatbeatInterval * 1000);
            }
        }
Пример #3
0
        public Task <creditorC> GetCreditorSingle(int cr_account_id)
        {
            creditorC _obj = null;
            string    _sql = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    _sql = string.Format("select TOP(1) * from {0} where cr_account_id={1} and delete_id = 0", FleetManager.DbBase.tableNames.creditor_tb.ToDbSchemaTable(), cr_account_id);
                    _obj = _db.Query <creditorC>(_sql).FirstOrDefault();
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_obj));
        }
        public Task <List <vh_expense_typeC> > GetAll(long fs_timestamp)
        {
            List <vh_expense_typeC> _list = null;
            string _sql = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    if (fs_timestamp == 0)
                    {
                        _sql  = string.Format("select * from {0} where delete_id = 0", _table_name.ToDbSchemaTable());
                        _list = _db.Query <vh_expense_typeC>(_sql).ToList();
                    }
                    else
                    {
                        _sql  = string.Format("select * from {0} where fs_timestamp > {1}", _table_name.ToDbSchemaTable(), fs_timestamp);
                        _list = _db.Query <vh_expense_typeC>(_sql).ToList();
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_list));
        }
Пример #5
0
        public Task <List <creditorC> > GetAllCreditors(long fs_timestamp)
        {
            List <creditorC> _list = null;
            string           _sql  = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    if (fs_timestamp == 0)
                    {
                        _sql  = string.Format("select * from {0} where delete_id = 0", FleetManager.DbBase.tableNames.creditor_tb.ToDbSchemaTable());
                        _list = _db.Query <creditorC>(_sql).ToList();
                    }
                    else
                    {
                        _sql  = string.Format("select * from {0} where fs_timestamp > {1}", FleetManager.DbBase.tableNames.creditor_tb.ToDbSchemaTable(), fs_timestamp);
                        _list = _db.Query <creditorC>(_sql).ToList();
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_list));
        }
        public Task <List <vh_expense_transC> > GetAllRecentVehicleExpenses(dto_vehicle_expense_recentC _dto)
        {
            List <vh_expense_transC> _list = null;

            if (_dto == null)
            {
                AddErrorMessage("Error", "Error", "DTO Object Can Not Be Null");
                return(Task.FromResult(_list));
            }
            string _sql = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    _sql = string.Format("select TOP 15 * from {0} where vehicle_id={1} and exp_type_id={2} and delete_id = 0 order by expense_fs_id desc",
                                         _table_name.ToDbSchemaTable(), _dto.vehicle_id, _dto.exp_type_id);
                    _list = _db.Query <vh_expense_transC>(_sql).ToList();
                }
            }

            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_list));
        }
Пример #7
0
        public Task <List <creditor_depositC> > GetAllCreditorDepositsByMonthPartition(dto_month_partitionC _dto)
        {
            List <creditor_depositC> _list = null;
            string _sql = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    if (_dto.fs_timestamp == 0)
                    {
                        _sql  = string.Format("select * from {0} where m_partition_id = {1} and delete_id = 0", FleetManager.DbBase.tableNames.creditor_deposit_tb.ToDbSchemaTable(), _dto.m_partition_id);
                        _list = _db.Query <creditor_depositC>(_sql).ToList();
                    }
                    else
                    {
                        _sql  = string.Format("select * from {0} where m_partition_id = {1} and fs_timestamp > {2}", FleetManager.DbBase.tableNames.creditor_deposit_tb.ToDbSchemaTable(), _dto.m_partition_id, _dto.fs_timestamp);
                        _list = _db.Query <creditor_depositC>(_sql).ToList();
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_list));
        }
        public Task <List <vh_expense_transC> > GetAllExpensesByMonthPartition(dto_month_partitionC _dto)
        {
            List <vh_expense_transC> _list = null;
            string _sql = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    if (_dto.fs_timestamp == 0)
                    {
                        _sql  = string.Format("select * from {0} where m_partition_id = {1} and delete_id = 0", _table_name.ToDbSchemaTable(), _dto.m_partition_id);
                        _list = _db.Query <vh_expense_transC>(_sql).ToList();
                    }
                    else
                    {
                        _sql  = string.Format("select * from {0} where m_partition_id = {1} and fs_timestamp > {2}", _table_name.ToDbSchemaTable(), _dto.m_partition_id, _dto.fs_timestamp);
                        _list = _db.Query <vh_expense_transC>(_sql).ToList();
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_list));
        }
        public Task <vh_expense_typeC> GetSingle(int id)
        {
            vh_expense_typeC _item = null;
            string           _sql  = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    _sql  = string.Format("select * from {0} where exp_type_id = {1} and delete_id = 0", _table_name.ToDbSchemaTable());
                    _item = _db.Query <vh_expense_typeC>(_sql).FirstOrDefault();
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_item));
        }
Пример #10
0
 public IoTBase(IRedGreenQueueAdapter redq, LoggerX loggerX)
 {
     this._redq     = redq;
     LoggerX        = loggerX;
     integrationLog = new IntegrationProcessLog();
     processLog     = new IntegrationProcessLog();
 }
Пример #11
0
        public Task <vh_driverC> Add(dto_driver_newC _dto)
        {
            vh_driverC _obj = null;

            if (fnn.LOGGED_USER.DoesNotHaveRight(em.user_rights_types.can_create_vehicle_driver))
            {
                _obj = null;
                AddErrorMessage("Limited Rights Error", "Rights Error", "You Can Not Perform This Operation");
                return(Task.FromResult(_obj));
            }
            if (_dto == null)
            {
                AddErrorMessage("Error", "Error", "New Driver Object Is Null");
                return(Task.FromResult(_obj));
            }
            if (string.IsNullOrEmpty(_dto.driver_name))
            {
                AddErrorMessage("Error", "Error", "Driver Name Is Missing");
                return(Task.FromResult(_obj));
            }
            try
            {
                using (var _db = fnn.GetDbContext())
                {
                    _obj = new vh_driverC()
                    {
                        driver_name        = _dto.driver_name.Trim(),
                        server_edate       = fnn.GetServerDate(),
                        driver_phone_no    = _dto.driver_phone_no,
                        fs_timestamp       = fnn.GetUnixTimeStamp(),
                        created_by_user_id = m_logged_user.user_id,
                        renew_expiry_date  = _dto.renew_expiry_date,
                        renew_issue_date   = _dto.renew_issue_date,
                        permit_no          = _dto.permit_no
                    };
                    _db.DRIVERS.Add(_obj);
                    var _retVal = _db.SaveChangesWithDuplicateKeyDetected();
                    if (_retVal == null || _retVal.Value == true)
                    {
                        AddErrorMessage("Duplicate Key Error", "Duplicate Key Error", "You Have Entered A Duplicate Name");
                        _obj = null;
                        return(Task.FromResult(_obj));
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_obj));
        }
        public Task<vh_categoryC> AddVehicleCategory(dto_vehicle_category_newC _dto)
        {
            vh_categoryC _obj = null;
            if (fnn.LOGGED_USER.DoesNotHaveRight(em.user_rights_types.can_create_vehicle_category))
            {

                AddErrorMessage("Limited Rights Error", "Rights Error", "You Can Not Perform This Operation");
                return Task.FromResult(_obj);
            }

            if (string.IsNullOrEmpty(_dto.vehicle_cat_name))
            {
                AddErrorMessage("Insert Error", "Save Error", "Vehicle Category Name Is Null");
                _obj = null;
                return Task.FromResult(_obj);
            }
            try
            {
                using (var _db = fnn.GetDbContext())
                {
                    _obj = new vh_categoryC()
                    {
                        vehicle_cat_name = _dto.vehicle_cat_name.Trim().ToProperCase(),
                        fs_timestamp = fnn.GetUnixTimeStamp(),
                        server_edate = fnn.GetServerDate(),
                        created_by_user_id = m_logged_user.user_id
                        };
                    _db.VEHICLE_CATEGORIES.Add(_obj);
                    var _retVal = _db.SaveChangesWithDuplicateKeyDetected();
                    if (_retVal == null || _retVal.Value == true)
                    {
                        AddErrorMessage("Duplicate Key Error", "Duplicate Key Error", "You Have Entered A Duplicate Cake Category Name");
                        _obj = null;
                        return Task.FromResult(_obj);
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
               LoggerX.LogException(ex);

            }
            return Task.FromResult(_obj);
        }
Пример #13
0
        public Task <vehicle_ownerC> Add(dto_vehicle_owner_newC _dto)
        {
            vehicle_ownerC _obj = null;

            if (_dto == null)
            {
                AddErrorMessage("Error", "Error", "New Vehicle Owner Object Is Null");
                return(Task.FromResult(_obj));
            }
            if (string.IsNullOrEmpty(_dto.vh_owner_name))
            {
                AddErrorMessage("Error", "Error", "Vehicle Owner Name Is Missing");
                return(Task.FromResult(_obj));
            }
            try
            {
                using (var _db = fnn.GetDbContext())
                {
                    _obj = new vehicle_ownerC()
                    {
                        vh_owner_name      = _dto.vh_owner_name.Trim(),
                        server_edate       = fnn.GetServerDate(),
                        fs_timestamp       = fnn.GetUnixTimeStamp(),
                        created_by_user_id = m_logged_user.user_id,
                    };
                    _db.VEHICLE_OWNERS.Add(_obj);
                    var _retVal = _db.SaveChangesWithDuplicateKeyDetected();
                    if (_retVal == null || _retVal.Value == true)
                    {
                        AddErrorMessage("Duplicate Key Error", "Duplicate Key Error", "You Have Entered A Duplicate Vehicle Owner Name");
                        _obj = null;
                        return(Task.FromResult(_obj));
                    }
                    fnn.CreateCreditor(_obj.vh_owner_id, _obj.vh_owner_name, _obj.vh_owner_phone_no, FleetManager.Shared.em.creditor_typeS.vehicle_owner, _db);
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_obj));
        }
 /// <summary>
 /// Added tags collection
 /// </summary>
 /// <param name="uniqueDicCode"></param>
 /// <returns></returns>
 ///
 private void StartIntegration()
 {
     Task.Run(() => _tagReadsSync.StartTagReads());
     LoggerX.WriteEventLog("Tag Read Monitor has started...");
     Task.Run(() => _RNCHeartbeatSync.StartAsync());
     LoggerX.WriteEventLog("RNC Heartbeat Monitor started...");
     Task.Run(() => _devicestatusSync.StartDeviceStatus());
     LoggerX.WriteEventLog("Device Status Monitor started...");
     Task.Run(() => _unreadRFIDSync.StartUnSeenMonitor());
     LoggerX.WriteEventLog("Unread list Monitor started...");
     Task.Run(() => _devicestatusSync.StartDeviceStatus());
     LoggerX.WriteEventLog("Keyframe sending started...");
     Task.Run(() => _keyFrameSync.StartKeyFrameMonitor());
 }
        public async Task StartAsync()
        {
            try
            {
                var _iotObject = new IotObject();
                _iotObject.Group      = "RFID";
                _iotObject.DeviceType = "RNC";
                _iotObject.DeviceName = IotGateway.GatewayId;
                _iotObject.ObjectType = "HEARTBEAT";

                while (true)
                {
                    await  UpdateLastCheckedLog(InterfaceType.rncheartbeat);

                    var lst = new List <(string, string, object)>();
                    Console.WriteLine("Check RNC Heartbeat");
                    //Check if the RNC Server is online -RNC IP Address is configurable in app.config

                    if (await IsRNCAlive(IotGateway.RNCIpAddress))
                    {
                        _iotObject.Object    = 1;
                        IotGateway.Heartbeat = true;
                        LoggerX.WriteEventLog($"RNC Heartbeat is alive");
                    }
                    else
                    {
                        _iotObject.Object    = 0;
                        IotGateway.Heartbeat = false;
                        LoggerX.WriteEventLog($"RNC Heartbeat is dead");
                    }
                    lst.Add(_iotObject.ToString());
                    Console.WriteLine("Attempting to send " + DateTime.Now.ToString());
                    await SendNotification(lst);
                    await  UpdateLastUpdatedLog(InterfaceType.rncheartbeat);

                    LoggerX.WriteEventLog($"RNC Heartbeat Notification Sent ");

                    if (IotGateway.RNCCheckInterval > 0)
                    {
                        await Task.Delay((int)(IotGateway.RNCCheckInterval * 1000));
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                LoggerX.WriteErrorLog(ex);
                _logger.LogError(ex, $"Sending notification for gateway {IotGateway.GatewayId}");
            }
        }
Пример #16
0
        public Task <projectC> Add(dto_project_newC _dto)
        {
            projectC _obj = null;

            if (_dto == null)
            {
                AddErrorMessage("Error", "Error", "New Project Object Is Null");
                return(Task.FromResult(_obj));
            }
            if (string.IsNullOrEmpty(_dto.project_name))
            {
                AddErrorMessage("Error", "Error", "Project Name Is Missing");
                return(Task.FromResult(_obj));
            }
            try
            {
                using (var _db = fnn.GetDbContext())
                {
                    _obj = new projectC()
                    {
                        project_name       = _dto.project_name.Trim(),
                        server_edate       = fnn.GetServerDate(),
                        fs_timestamp       = fnn.GetUnixTimeStamp(),
                        created_by_user_id = m_logged_user.user_id,
                    };
                    _db.PROJECTS.Add(_obj);
                    var _retVal = _db.SaveChangesWithDuplicateKeyDetected();
                    if (_retVal == null || _retVal.Value == true)
                    {
                        AddErrorMessage("Duplicate Key Error", "Duplicate Key Error", "You Have Entered A Duplicate Project  Name");
                        _obj = null;
                        return(Task.FromResult(_obj));
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_obj));
        }
Пример #17
0
        public Task <List <vh_expense_transC> > GetExpensesByExpenseType(dto_fs_rangeC _dto)
        {
            List <vh_expense_transC> _list = null;

            if (_dto == null)
            {
                AddErrorMessage("Error", "Error", "Expense Object Can Not Be Null");
                return(Task.FromResult(_list));
            }
            if (_dto.filter_id == 0)
            {
                AddErrorMessage("Error", "Error", "Filter Id Can Not Be Null");
                return(Task.FromResult(_list));
            }

            string _sql = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    if (_dto.fs_time_stamp == 0)
                    {
                        _sql  = string.Format("select * from {0} where delete_id = 0", _table_name.ToDbSchemaTable());
                        _list = _db.Query <vh_expense_transC>(_sql).ToList();
                    }
                    else
                    {
                        _sql = string.Format("select * from {0} where exp_type_id = {1} and fs_timestamp > {2} and fs_timestamp < {3}  and delete_id = 0",
                                             _table_name.ToDbSchemaTable(), _dto.filter_id, _dto.start_fs_id, _dto.end_fs_id);
                        _list = _db.Query <vh_expense_transC>(_sql).ToList();
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_list));
        }
        public async Task InitAsync()
        {
            try
            {
                _logger.LogInformation("Waiting for connecting...");
                LoggerX.WriteEventLog("Waiting for connecting...");

                if (!string.IsNullOrWhiteSpace(IotGateway.Secret))
                {
                    _logger.LogInformation($"Registering gateway {IotGateway.GatewayId}");
                    LoggerX.WriteEventLog($"Registering gateway {IotGateway.GatewayId}");


                    var gw = new Gateway.API.Abstractions.Gateway
                    {
                        GatewayId       = IotGateway.GatewayId,
                        Secret          = IotGateway.Secret,
                        Make            = "Innotrack",
                        Model           = "Vodaworld-RNC",
                        FirmwareVersion = typeof(Gateway1Simulation).Assembly.GetName().Version.ToString(),
                        Devices         = new Dictionary <string, Device>()
                    };
                    gw.Devices = await IotGateway.GetIotDevices();

                    // gw.Devices.Add("RFID|1:ZONE|ZONE1", new Device() { DeviceName = "RFID|1:ZONE|ZONE1", DeviceType = "ZONE", Properties = new Dictionary<string, DeviceProperty>() { { "TAGS", new DeviceProperty() { PropertyName = "TAGS", DataType = "RFIDDictionary" } } } });

                    await DapiContext.ExecuteAsync(username : IotGateway.UserName, action : () => _gatewayApi.RegisterGatewayFromGatewayAsync(gw));

                    if (!string.IsNullOrWhiteSpace(IotGateway.ClientId))
                    {
                        _logger.LogInformation($"Associating gateway {IotGateway.GatewayId} with client {IotGateway.ClientId}");
                        LoggerX.WriteEventLog($"Associating gateway {IotGateway.GatewayId} with client {IotGateway.ClientId}");
                        await DapiContext.ExecuteAsync(username : "******", action : () => _entityApi.AssociateGatewayAndClientAsync(IotGateway.GatewayId, IotGateway.ClientId));
                    }
                }
                connected = true;
                _logger.LogInformation($"Simulating gateway {IotGateway.GatewayId} started...");
                LoggerX.WriteEventLog($"Simulating gateway {IotGateway.GatewayId} started...");

                StartIntegration();
            }
            catch (Exception ex)
            {
                connected = false;
                _logger.LogError(ex, "Error initialization simulator");
            }
        }
Пример #19
0
        public Task <List <creditor_depositC> > GetAllCreditorDepositsByRange(dto_fs_rangeC _dto)
        {
            List <creditor_depositC> _list = null;

            if (_dto == null)
            {
                AddErrorMessage("Error", "Error", "DTO Can Not Be Null");
                return(Task.FromResult(_list));
            }

            string _sql = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    if (_dto.fs_time_stamp == 0)
                    {
                        _sql = string.Format("select * from {0} where  (deposit_fs_id>={1} and  deposit_fs_id <= {2}) and delete_id = 0",
                                             FleetManager.DbBase.tableNames.creditor_deposit_tb.ToDbSchemaTable(), _dto.start_fs_id, _dto.end_fs_id);
                        _list = _db.Query <creditor_depositC>(_sql).ToList();
                    }
                    else
                    {
                        _sql = string.Format("select * from {0} where (deposit_fs_id >={1} and  deposit_fs_id <= {2}) and fs_timestamp >{3}",
                                             FleetManager.DbBase.tableNames.creditor_deposit_tb.ToDbSchemaTable(), _dto.start_fs_id, _dto.end_fs_id, _dto.fs_time_stamp);
                        _list = _db.Query <creditor_depositC>(_sql).ToList();
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_list));
        }
Пример #20
0
        public Task <List <creditor_depositC> > GetCreditorDepositsByCreditorId(int cr_account_id, long fs_timestamp)
        {
            List <creditor_depositC> _list = null;
            string _sql = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    if (fs_timestamp == 0)
                    {
                        _sql = string.Format("select * from {0} where cr_account_id={1} and delete_id = 0",
                                             FleetManager.DbBase.tableNames.creditor_deposit_tb.ToDbSchemaTable(), cr_account_id);
                        _list = _db.Query <creditor_depositC>(_sql).ToList();
                    }
                    else
                    {
                        _sql = string.Format("select * from {0} where cr_account_id={1} and fs_timestamp > {2}",
                                             FleetManager.DbBase.tableNames.creditor_deposit_tb.ToDbSchemaTable(), cr_account_id, fs_timestamp);
                        _list = _db.Query <creditor_depositC>(_sql).ToList();
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_list));
        }
 public TagReadsSync(IRedGreenQueueAdapter redq, ILogger <TagReads> logger, LoggerX loggerx) : base(redq, loggerx)
 {
     _logger = logger;
     TagList = new List <TagReads>();
 }
        /// <summary>
        /// Loop through all devices and send current tag list to IoT Cloud Platform
        /// </summary>
        /// <returns></returns>
        public async Task StartKeyFrameMonitor()
        {
            while (DeviceList.Count == 0)
            {
                DeviceList = await new Device().ReadAsync();
            }
            while (true)
            {
                try
                {
                    await UpdateLastCheckedLog(InterfaceType.keyframe);

                    var lst = new List <(string, string, object)>();
                    foreach (var device in DeviceList)
                    {
                        var _iotObject = new IotObject();
                        _iotObject.Group = "RFID";
                        await _iotObject.SetDevice(device);

                        _iotObject.ObjectType = "TAGS";
                        //Add all added tag of device
                        await Task.Delay(100);

                        Dictionary <string, JObject> Alltags = null;
                        while (Alltags == null)
                        {
                            Alltags = await GetCurrentDeviceTagList(device);
                        }
                        //if (Alltags.Count == 0)
                        //    continue;

                        LoggerX.WriteEventLog($"{Alltags.Count} tags found at device {device.DeviceName}");
                        var value = new JObject
                        {
                            ["reset"] = JObject.FromObject(Alltags)
                        };
                        _iotObject.Object = value;
                        lst.Add(_iotObject.ToString());
                        //Console.WriteLine(JArray.FromObject(lst).ToString());
                    }
                    _logger.LogTrace("Logging: Key frame attempt");
                    Console.WriteLine("Key frame try..");
                    LoggerX.WriteEventLog("Reset Notification Try");
                    await SendNotification(lst);
                    await UpdateLastUpdatedLog(InterfaceType.keyframe);

                    LoggerX.WriteEventLog("Reset Notification Sent");

                    //Delay For Total Key Frame Interval Seconds
                    if (IotGateway.KeyframeInterval > 0)
                    {
                        await Task.Delay((int)(IotGateway.KeyframeInterval * 1000));
                    }
                }
                catch (Exception ex)
                {
                    LoggerX.WriteErrorLog(ex);
                    _logger.LogError(ex, $"Sending notification for gateway {IotGateway.GatewayId}");
                }
            }
        }
 public KeyFrameSync(IRedGreenQueueAdapter redq, ILogger <KeyFrameSync> logger, LoggerX loggerX) : base(redq, loggerX)
 {
     DeviceList = new List <Device>();
     _logger    = logger;
 }
        public Task <vh_expense_typeC> Add(dto_expense_type_newC _dto)
        {
            vh_expense_typeC _obj = null;

            if (fnn.LOGGED_USER.DoesNotHaveRight(em.user_rights_types.can_delete_expense_type_field))
            {
                AddErrorMessage("Limited Rights Error", "Rights Error", "You Can Not Perform This Operation");
                return(Task.FromResult(_obj));
            }

            if (_dto == null)
            {
                AddErrorMessage("Error", "Error", "New Expense Object Is Null");
                return(Task.FromResult(_obj));
            }
            if (_dto.exp_cat_id == 0)
            {
                AddErrorMessage("Error", "Error", "No Expense Category Selected");
                return(Task.FromResult(_obj));
            }
            if (string.IsNullOrEmpty(_dto.exp_type_name))
            {
                AddErrorMessage("Error", "Error", "Expense Type Name Is Missing");
                return(Task.FromResult(_obj));
            }

            try
            {
                using (var _db = fnn.GetDbContext())
                {
                    _obj = new vh_expense_typeC()
                    {
                        exp_cat_id         = _dto.exp_cat_id,
                        exp_type_name      = _dto.exp_type_name.Trim(),
                        server_edate       = fnn.GetServerDate(),
                        fs_timestamp       = fnn.GetUnixTimeStamp(),
                        created_by_user_id = m_logged_user.user_id,
                    };
                    _db.EXPENSE_TYPES.Add(_obj);
                    var _retVal = _db.SaveChangesWithDuplicateKeyDetected();
                    if (_retVal == null || _retVal.Value == true)
                    {
                        AddErrorMessage("Duplicate Key Error", "Duplicate Key Error", "You Have Entered A Duplicate Expense Type  Name");
                        _obj = null;
                        return(Task.FromResult(_obj));
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_obj));
        }
        public Task <vh_expense_typeC> Update(dto_expense_type_updateC _dto)
        {
            vh_expense_typeC _existing = null;

            if (fnn.LOGGED_USER.DoesNotHaveRight(em.user_rights_types.can_edit_expense_type))
            {
                _existing = null;
                AddErrorMessage("Limited Rights Error", "Rights Error", "You Can Not Perform This Operation");
                return(Task.FromResult(_existing));
            }

            if (string.IsNullOrEmpty(_dto.exp_type_name))
            {
                AddErrorMessage("Update Error", "Save Error", "Expense Type  Name Is Null!");
                return(Task.FromResult(_existing));
            }
            try
            {
                using (var _trans = new ZUpdateContext())
                {
                    _existing = _trans.Context.EXPENSE_TYPES.Where(e => e.exp_type_id == _dto.exp_type_id & e.delete_id == 0).FirstOrDefault();
                    if (_existing == null)
                    {
                        AddErrorMessage("Update Error", "Save Error", "Unable To Find Expense Type Object");
                        return(Task.FromResult(_existing));
                    }
                    if (_existing.exp_type_id < 0)
                    {
                        AddErrorMessage("Update Error", "Update Error", "Cannot Update A System Defined Expense Type");
                        return(Task.FromResult(_existing));
                    }

                    if (_existing.exp_type_name.ToLower() != _dto.exp_type_name.ToLower())
                    {
                        var _ret = DbHelper.UpdatePrimaryKeyColumn(new DbHelperPrimarykeyUpdateC
                        {
                            col_to_update = "exp_type_name",
                            new_col_value = _dto.exp_type_name.Trim().ToProperCase(),
                            table_name    = DbHelper.GetTableSchemaName(_table_name),
                            pk_col_name   = "exp_type_id",
                            pk_id         = _dto.exp_type_id
                        }, _trans.Context);
                        if (_ret == null || _ret.Value == false)
                        {
                            AddErrorMessage("Error", "Update Error", "Expense Type Name Already Exists");
                            _trans.RollBack();
                            return(Task.FromResult(_existing));
                        }
                        else
                        {
                            _trans.Context.SaveChanges();
                            _existing = _trans.Context.EXPENSE_TYPES.Where(e => e.exp_type_id == _dto.exp_type_id & e.delete_id == 0).FirstOrDefault();
                        }
                    }
                    SimpleMapper.PropertyMap(_dto, _existing);
                    _trans.Context.EXPENSE_TYPES.AddOrUpdateExtension(_existing);
                    _trans.Context.SaveChanges();
                    _trans.Commit();
                    return(Task.FromResult(_existing));
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_existing));
        }
        public Task <bool> Delete(int id)
        {
            bool _record_deleted = false;

            if (fnn.LOGGED_USER.DoesNotHaveRight(em.user_rights_types.can_delete_expense_type))
            {
                _record_deleted = false;
                AddErrorMessage("Limited Rights Error", "Rights Error", "You Can Not Perform This Operation");
                return(Task.FromResult(_record_deleted));
            }
            try
            {
                using (var _db = fnn.GetDbContext())
                {
                    var exp_type = _db.EXPENSE_TYPES.Where(e => e.exp_type_id == id & e.delete_id == 0).FirstOrDefault();
                    if (exp_type == null)
                    {
                        AddErrorMessage("Error", "Error", "Unable To Find Expense Type Object");
                        _record_deleted = false;
                        return(Task.FromResult(_record_deleted));
                    }
                    else
                    {
                        if (exp_type.exp_type_id < 0)
                        {
                            AddErrorMessage("Update Error", "Update Error", "Cannot Delete A System Defined Expense Type");
                            _record_deleted = false;
                            return(Task.FromResult(_record_deleted));
                        }

                        var _has_dependency = DbHelper.HasDbDependencies(_db.Database, new string[] { DbHelper.GetTableSchemaName(_table_name) }, DbHelper.GetDbSchema(), new string[] { "exp_type_id" }, id);
                        if (_has_dependency == null || _has_dependency == true)
                        {
                            AddErrorMessage("Delete Error", "Delete Error", "Unable To Delete Record Because It Has System Dependencies.");
                            _record_deleted = false;
                            return(Task.FromResult(_record_deleted));
                        }
                        else
                        {
                            var _result = DbHelper.DeleteRecordWithDeleteId(new DbHelperDeleteRecordC()
                            {
                                pk_col_name = "exp_type_id",
                                pk_id       = exp_type.exp_type_id,
                                table_name  = DbHelper.GetTableSchemaName(_table_name)
                            }, _db);
                            if (_result == null || _result == false)
                            {
                                AddErrorMessage("Delete Error", "Delete Error", "Error Encountered While Trying To Delete Record");
                                _record_deleted = false;
                                return(Task.FromResult(_record_deleted));
                            }
                            else
                            {
                                _record_deleted = true;
                                _db.SaveChanges();
                                return(Task.FromResult(_record_deleted));
                            }
                        }
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_record_deleted));
        }
Пример #27
0
        public Task <vehicle_ownerC> Update(dto_vehicle_owner_updateC _dto)
        {
            vehicle_ownerC _existing = null;

            if (_dto == null)
            {
                AddErrorMessage("Update Error", "Save Error", "Driver Object Is Null!");
                _existing = null;
                return(Task.FromResult(_existing));
            }
            if (_dto.vh_owner_id == 0)
            {
                AddErrorMessage("Error", "Error", "Vehicle Owner Id Is Missing");
                return(Task.FromResult(_existing));
            }
            if (string.IsNullOrEmpty(_dto.vh_owner_name))
            {
                AddErrorMessage("Error", "Error", "Vehicle Owner Name Is Missing");
                return(Task.FromResult(_existing));
            }

            try
            {
                using (var _trans = new ZUpdateContext())
                {
                    _existing = _trans.Context.VEHICLE_OWNERS.Where(e => e.vh_owner_id == _dto.vh_owner_id & e.delete_id == 0).FirstOrDefault();
                    if (_existing == null)
                    {
                        _existing = null;
                        AddErrorMessage("Update Error", "Save Error", "Unable To Find Project Object");
                        return(Task.FromResult(_existing));
                    }
                    if (_existing.vh_owner_name.ToLower() != _dto.vh_owner_name.ToLower())
                    {
                        var _ret = DbHelper.UpdatePrimaryKeyColumn(new DbHelperPrimarykeyUpdateC
                        {
                            col_to_update = "vh_owner_name",
                            new_col_value = _dto.vh_owner_name.Trim().ToProperCase(),
                            table_name    = DbHelper.GetTableSchemaName(_table_name),
                            pk_col_name   = "vh_owner_id",
                            pk_id         = _dto.vh_owner_id
                        }, _trans.Context);
                        if (_ret == null || _ret.Value == false)
                        {
                            AddErrorMessage("Error", "Update Error", "Vehicle Owner Name Already Exists");
                            _existing = null;
                            _trans.RollBack();
                            return(Task.FromResult(_existing));
                        }
                        else
                        {
                            _trans.Context.SaveChanges();
                            _existing = _trans.Context.VEHICLE_OWNERS.Where(e => e.vh_owner_id == _dto.vh_owner_id & e.delete_id == 0).FirstOrDefault();
                        }
                    }
                    if (_existing.cr_account_id > 0)
                    {
                        string _sql = string.Format("update {0} set cr_account_name=@v1,cr_phone_no=@v2,fs_timestamp=@v3 where cr_account_id=@v4 and delete_id=0",
                                                    FleetManager.DbBase.tableNames.creditor_tb.ToDbSchemaTable());
                        _trans.Context.Database.Connection.Execute(_sql, new
                        {
                            v1 = _existing.vh_owner_name,
                            v2 = _existing.vh_owner_phone_no,
                            v3 = fnn.GetUnixTimeStamp(),
                            v4 = _existing.cr_account_id
                        }, _trans.Context.Database.GetDbTransaction());
                        _trans.Context.SaveChanges();
                    }
                    SimpleMapper.PropertyMap(_dto, _existing);
                    _trans.Context.VEHICLE_OWNERS.AddOrUpdateExtension(_existing);
                    _trans.Context.SaveChanges();
                    _trans.Commit();
                    return(Task.FromResult(_existing));
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_existing));
        }
Пример #28
0
        public Task <bool> Delete(int id)
        {
            vehicle_ownerC _existing       = null;
            bool           _record_deleted = false;

            try
            {
                using (var _db = fnn.GetDbContext())
                {
                    _existing = _db.VEHICLE_OWNERS.Where(e => e.vh_owner_id == id & e.delete_id == 0).SingleOrDefault();
                    if (_existing == null)
                    {
                        _record_deleted = false;
                        AddErrorMessage("Delete Error", "Delete Error", "Could Not Find Vehicle Owner Object");
                        return(Task.FromResult(_record_deleted));
                    }
                    else
                    {
                        var _has_dependency = DbHelper.HasDbDependencies(_db.Database, new string[] { DbHelper.GetTableSchemaName(_table_name) },
                                                                         DbHelper.GetDbSchema(), new string[] { "vh_owner_id" }, id);
                        if (_has_dependency == null || _has_dependency == true)
                        {
                            AddErrorMessage("Delete Error", "Delete Error", "Unable To Delete Record Because It Has System Dependencies.");
                            _record_deleted = false;
                            return(Task.FromResult(_record_deleted));
                        }
                        else
                        {
                            var _result = DbHelper.DeleteRecordWithDeleteId(new DbHelperDeleteRecordC()
                            {
                                pk_col_name = "vh_owner_id",
                                pk_id       = _existing.vh_owner_id,
                                table_name  = _table_name.ToDbSchemaTable()
                            }, _db);
                            if (_result == null || _result == false)
                            {
                                AddErrorMessage("Delete Error", "Delete Error", "Error Encountered While Trying To Delete Record");
                                _record_deleted = false;
                                return(Task.FromResult(_record_deleted));
                            }
                            else
                            {
                                _record_deleted = true;
                                _db.SaveChanges();
                            }
                        }
                    }
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            if (_record_deleted)
            {
                Task.Run(() =>
                {
                    if (_existing.cr_account_id > 0)
                    {
                        fnn.DeleteCreditor(_existing.cr_account_id);
                    }
                });
            }
            return(Task.FromResult(_record_deleted));
        }
Пример #29
0
 public DeviceStatusSync(IRedGreenQueueAdapter redq, ILogger <DeviceStatusSync> logger, LoggerX loggerX) : base(redq, loggerX)
 {
     Devices = new List <Device>();
     _logger = logger;
 }
        public async Task StartTagReads()
        {
            //  await Gateway.InitAsync();

            while (true)
            {
                LoggerX.WriteDebugLog("1. Check for un processed tags");
                //Get all un seen tags
                //while(TagList == null)
                TagList = await CheckForUnprocessedTags();

                //Loop through all unprocessed tags
                LoggerX.WriteDebugLog($"2. {TagList.Count} Tags found to process");
                foreach (var read in TagList)
                {
                    try
                    {
                        var lst        = new List <(string, string, object)>();
                        var _iotObject = new IotObject("RFID");//Group name
                        await UpdateLastCheckedLog(InterfaceType.tagreads);

                        //Add new tag read of device
                        LoggerX.WriteDebugLog($"3. Get all tags of device {read.Device.DeviceName}");
                        Dictionary <string, RfidTag> addedUpdatedTags = null;
                        while (addedUpdatedTags == null)
                        {
                            addedUpdatedTags = await GetAddedTags(read.Device.DeviceName);
                        }
                        var value = new JObject
                        {
                            ["addOrUpdate"] = JObject.FromObject(addedUpdatedTags)
                        };
                        LoggerX.WriteDebugLog($"4. Add device taglist to iot object");
                        //AddTagRead(read.Device.DeviceName, read.EPC, read.DateTime.ToString());
                        //Remove all tags from last device and add to

                        LoggerX.WriteDebugLog($"5. Get remove list");
                        await AddRemovedTagsToList(lst);

                        LoggerX.WriteDebugLog($"6. Remove list added to iot object");
                        // await Task.Delay(10);
                        LoggerX.WriteEventLog($"7. {read.EPC} tags read at device: {read.Device.DeviceName}");

                        _iotObject.Object = value;
                        _iotObject.Group  = "RFID";
                        // _iotObject.DeviceType = "ZONE";
                        await _iotObject.SetDevice((Innotrack.DeviceManager.Entities.Device) read.Device);

                        //_iotObject.DeviceName = read.Device.DeviceName;
                        _iotObject.ObjectType = "TAGS";
                        lst.Add(_iotObject.ToString());
                        LoggerX.WriteEventLog($"8. Fill iot object");
                        // lst.Add(("RFID|1:ZONE|" + read.Device.DeviceName, "TAGS", value));
                        if (lst.Count > 0)
                        {
                            LoggerX.WriteEventLog(JArray.FromObject(lst).ToString());
                            LoggerX.WriteEventLog("Tag Reads Notification Try");
                            await SendNotification(lst);

                            LoggerX.WriteEventLog("Tag Reads Notification Sent");
                            UpdateTagReadsHostSeen();
                            //read.HostSeen = true;
                            //read.Update();
                            await  UpdateLastUpdatedLog(InterfaceType.tagreads);

                            lst.Clear();
                        }
                    }
                    catch (Exception ex)
                    {
                        LoggerX.WriteErrorLog(ex);
                        _logger.LogError(ex, $"Sending notification for gateway {IotGateway.GatewayId}");
                        // await Task.Delay((int)(Math.Max(1, sim.IntervalSeconds) * 1000));
                    }
                    break;
                }
                await Task.Delay(50);
            }
            // ReSharper disable once FunctionNeverReturns
        }