public async Task GetBatteryByIdAsync_CallsBatteryRepositoryGetByIdAsync()
        {
            var service = new BatteryService(_batteryRepositoryMock.Object, _batteryTypeRepositoryMock.Object, _batteryChargeRepositoryMock.Object, _loggerMock.Object);
            var result  = await service.GetBatteryByIdAsync(1, 1);

            _batteryRepositoryMock.Verify(x => x.GetByIdAsync(It.IsAny <int>()));
        }
        // Populate the page with entity data
        private void PopulatePage()
        {
            int batteryId = 0;

            try
            {
                // Get object from BatteryApi
                batteryId = Int32.Parse(Security.GetQueryString());
                BatteryDto battery = BatteryService.GetBattery(batteryId);

                BatteryReferenceTb.Text  = battery.Battery_Ref;
                CycleIndexTb.Text        = battery.Cycle_Index.ToString();
                ChargeCapacityTb.Text    = battery.Charge_Capacity.ToString();
                DischargeCapacityTb.Text = battery.Discharge_Capacity.ToString();
                ChargeEnergyTb.Text      = battery.Charge_Energy.ToString();
                DischargeEnergyTb.Text   = battery.Discharge_Energy.ToString();
                dvdtTb.Text = battery.dvdt.ToString();
                InternalResistanceTb.Text = battery.Internal_Resistance.ToString();
            }
            catch
            {
                // ERROR - User contained invalid data
                Response.Redirect("BatteryDetail?Id{" + batteryId + "}&message=DatabaseError");
            }
        }
        public async Task EnterNullBatteryType_ThrowsArgumentNullException()
        {
            BatteryType batteryType = null;
            var         service     = new BatteryService(_batteryRepositoryMock.Object, _batteryTypeRepositoryMock.Object, _batteryChargeRepositoryMock.Object, _loggerMock.Object);

            await Assert.ThrowsAsync <ArgumentNullException>(() => service.EnterNewBatteryTypeAsync(1, batteryType));
        }
        // Populate the page with entity data
        private void PopulatePage()
        {
            int batchId = 0;

            try
            {
                // Get object from BatchApi
                batchId = Int32.Parse(Security.GetQueryString());
                BatchDto batch = BatchService.GetBatch(batchId);

                BatchReferenceTb.Text = batch.Batch_Ref;
            }
            catch
            {
                // ERROR - User contained invalid data
                Response.Redirect("BatchDetail?Id{" + batchId + "}&message=DatabaseError");
            }

            List <BatteryDto> batteries = BatteryService.GetBatteries(batchId);

            if (batteries.Count > 0)
            {
                // If there are batteries in this batch; display the gridview
                BatteryGridView.DataSource = batteries;
                BatteryGridView.DataBind();
            }
            else
            {
                // Otherwise hide the gridview and display an alternative message
                hiddenDiv.Visible   = true;
                SubtitleDiv.Visible = false;
                DownloadDiv.Visible = false;
            }
        }
        // Update Battery in the database
        protected void UpdateBtn_Click(object sender, EventArgs e)
        {
            // Create Battery Object
            int        batteryId = Int32.Parse(Security.GetQueryString());
            BatteryDto battery   = BatteryService.GetBattery(batteryId);

            battery.Battery_Ref        = BatteryReferenceTb.Text;
            battery.Cycle_Index        = Int32.Parse(CycleIndexTb.Text);
            battery.Charge_Capacity    = Double.Parse(ChargeCapacityTb.Text);
            battery.Discharge_Capacity = Double.Parse(DischargeCapacityTb.Text);
            battery.Charge_Energy      = Double.Parse(ChargeEnergyTb.Text);
            battery.Discharge_Energy   = Double.Parse(DischargeEnergyTb.Text);
            battery.dvdt = Double.Parse(dvdtTb.Text);
            battery.Internal_Resistance = Double.Parse(InternalResistanceTb.Text);
            battery.BatchId             = Int32.Parse(BatteryService.GetBatchId().ToString());
            battery.Lifetime            = null;

            // update in database
            if (BatteryService.UpdateBattery(battery))
            {
                Response.Redirect("Default.aspx?message=BatteryUpdateSuccess");
            }
            else
            {
                Response.Redirect("BatteryDetail.aspx?id=" + batteryId + "&message=UpdateError");
            }
        }
Example #6
0
 public void StopServices()
 {
     this.BatteryService.ValueChangeCompleted -= BatteryService_ValueChangeCompleted;
     this.BatteryLevel = DEFAULT_BATTERYVALUE;
     BatteryService.Stop();
     LinkLossService.Stop();
     ImmediateAlertService.Stop();
 }
        public async Task DeleteBatteryTypeAsyncWithBadId_ThrowsBatteryTypeNotFound()
        {
            var batteryTypeId = 8;

            _batteryTypeRepositoryMock.Setup(x => x.GetById(It.IsAny <int>())).Returns <BatteryType>(null);
            var service = new BatteryService(_batteryRepositoryMock.Object, _batteryTypeRepositoryMock.Object, _batteryChargeRepositoryMock.Object, _loggerMock.Object);

            await Assert.ThrowsAsync <BatteryNotFoundException>(() => service.DeleteBatteryAsync(1, batteryTypeId));
        }
        public async Task EnterNewBatteryType_CallsBatteryTypeRepositoryAdd()
        {
            var batteryType = new BatteryType {
                Type = "Graphene", Cells = 4, CapacityMah = 2200, WeightInGrams = 500, AccountId = 1
            };
            var service = new BatteryService(_batteryRepositoryMock.Object, _batteryTypeRepositoryMock.Object, _batteryChargeRepositoryMock.Object, _loggerMock.Object);

            await service.EnterNewBatteryTypeAsync(1, batteryType);

            _batteryTypeRepositoryMock.Verify(x => x.AddAsync(batteryType));
        }
        public async Task UpdateBatteryTypeAsync_CallsBatteryTypeRepositoryUpdateAsync()
        {
            var batteryType = new BatteryType {
                AccountId = 1, Type = "Graphene", Cells = 4, CapacityMah = 2200, WeightInGrams = 500
            };

            _batteryTypeRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <BatteryType>())).Returns(Task.FromResult(batteryType));
            var service = new BatteryService(_batteryRepositoryMock.Object, _batteryTypeRepositoryMock.Object, _batteryChargeRepositoryMock.Object, _loggerMock.Object);

            var result = await service.UpdateBatteryTypeAsync(1, batteryType);

            _batteryTypeRepositoryMock.Verify(x => x.UpdateAsync(batteryType));
        }
        // Soft-delete Battery in the database
        protected void DeleteBtn_Click(object sender, EventArgs e)
        {
            int batteryId = Int32.Parse(Security.GetQueryString());

            // Soft delete battery in Database
            if (BatteryService.DeleteBattery(batteryId))
            {
                Response.Redirect("Default.aspx?message=BatteryDeleteSuccess");
            }
            else
            {
                Response.Redirect("BatteryDetail.aspx?id=" + batteryId + "&message=DeleteError");
            }
        }
        public async Task DeleteBatteryTypeAsync_CallsRepositoryDeleteAsync()
        {
            var batteryTypeId = 1;
            var batteryType   = new BatteryType {
                Id = batteryTypeId, AccountId = 1, Type = "Graphene", Cells = 4, CapacityMah = 2200, WeightInGrams = 500
            };

            _batteryTypeRepositoryMock.Setup(x => x.GetById(It.IsAny <int>())).Returns(batteryType);
            var service = new BatteryService(_batteryRepositoryMock.Object, _batteryTypeRepositoryMock.Object, _batteryChargeRepositoryMock.Object, _loggerMock.Object);

            await service.DeleteBatteryTypeAsync(1, batteryTypeId);

            _batteryTypeRepositoryMock.Verify(x => x.DeleteAsync(batteryType));
        }
Example #12
0
        public async void StartServicesOnDevice(DeviceInformationItem chosenBLEDevice)
        {
            var linkLossServiceOnDevice       = chosenBLEDevice.Device.GetGattService(GattServiceUuids.LinkLoss);
            var batteryServiceOnDevice        = chosenBLEDevice.Device.GetGattService(GattServiceUuids.Battery);
            var ImmediateAlertServiceOnDevice = chosenBLEDevice.Device.GetGattService(GattServiceUuids.ImmediateAlert);
            await BatteryService.Start(batteryServiceOnDevice);

            await LinkLossService.Start(linkLossServiceOnDevice);

            LinkLossService.WriteAlertLevelCharacteristicAsync(AlertLevelEnum.HighAlert);
            await ImmediateAlertService.Start(ImmediateAlertServiceOnDevice);

            BatteryService.ValueChangeCompleted += BatteryService_ValueChangeCompleted;
        }
Example #13
0
        Dictionary <string, string> GetData()
        {
            var batteryService = new BatteryService();
            var data           = new Dictionary <string, string>();

            data.Add(nameof(batteryService.IsCharging), batteryService.IsCharging.ToString());
            data.Add(nameof(batteryService.BatteryLevel), batteryService.BatteryLevel.ToString());
            data.Add("BatteryState", batteryService.BatteryState);
            data.Add("PowerType", batteryService.PowerType);
            foreach (var item in batteryService.AddInfo)
            {
                data.Add(item.Title, item.Value);
            }
            return(data);
        }
        public async Task GetBatteriesAsync_CallsListAllAsyncInRepository()
        {
            var batteryList = new List <Battery> {
                new Battery {
                    Id = 1, AccountId = 1, IsActive = true, Notes = "Test battery", PurchaseDate = DateTime.Now.AddMonths(-1)
                }
            };

            _batteryRepositoryMock.Setup(x => x.GetAllAsync()).Returns(Task.FromResult(batteryList));
            var service = new BatteryService(_batteryRepositoryMock.Object, _batteryTypeRepositoryMock.Object, _batteryChargeRepositoryMock.Object, _loggerMock.Object);

            var result = await service.ListBatteriesAsync(1);

            Assert.NotEmpty(result);
            _batteryRepositoryMock.Verify(x => x.GetAllAsync());
        }
        public async Task UpdateBatteryAsync_CallsBatteryRepositoryUpdateAsync()
        {
            var battery = new Battery {
                Id = 7, AccountId = 1, BatteryType = new BatteryType {
                    Id = 2, Type = "NanoTech", Cells = 3
                }, IsActive = true, PurchaseDate = DateTime.Now, Notes = "Notes for the test"
            };

            _batteryRepositoryMock.Setup(x => x.UpdateAsync(It.IsAny <Battery>())).Returns(Task.FromResult(battery));
            var service = new BatteryService(_batteryRepositoryMock.Object, _batteryTypeRepositoryMock.Object, _batteryChargeRepositoryMock.Object, _loggerMock.Object);

            var result = await service.UpdateBatteryAsync(1, battery);

            _batteryRepositoryMock.Verify(x => x.UpdateAsync(It.IsAny <Battery>()));
            Assert.IsType <Battery>(result);
        }
        public async Task DeleteBatteryAsync_CallsRepositoryDeleteAsync()
        {
            var batteryId = 3;
            var battery   = new Battery {
                Id = batteryId, AccountId = 1, BatteryType = new BatteryType {
                    Id = 1, Type = "NanoTech", Cells = 3
                }, IsActive = true, PurchaseDate = DateTime.Now, Notes = "Notes for the test"
            };

            _batteryRepositoryMock.Setup(x => x.GetById(It.IsAny <int>())).Returns(battery);
            var service = new BatteryService(_batteryRepositoryMock.Object, _batteryTypeRepositoryMock.Object, _batteryChargeRepositoryMock.Object, _loggerMock.Object);

            await service.DeleteBatteryAsync(1, batteryId);

            _batteryRepositoryMock.Verify(x => x.DeleteAsync(battery));
        }
        public void EnterChargeDataWithNullBattery_ThrowsBatteryNotFoundException()
        {
            var battery = new Battery {
                Id = 0, AccountId = 1
            };
            var charge = new BatteryCharge {
                Battery = battery, ChargedOn = DateTime.Now, Type = ChargeType.Standard, Mah = 1000
            };

            _batteryRepositoryMock.Setup(x => x.GetById(It.IsAny <int>())).Returns(() => null);
            var service = new BatteryService(
                _batteryRepositoryMock.Object,
                _batteryTypeRepositoryMock.Object,
                _batteryChargeRepositoryMock.Object,
                _loggerMock.Object
                );

            Assert.ThrowsAsync <BatteryNotFoundException>(() => service.EnterChargeDataAsync(1, battery, charge.ChargedOn, charge.Type, charge.Mah));
        }
        // Predict the remaining lifetime for a Battery in the gridview
        protected void PredictLB_Command(object sender, CommandEventArgs e)
        {
            int batchId = Int32.Parse(Security.GetQueryString());

            // Get batteryId
            int batteryId = 0;

            try
            {
                batteryId = Int32.Parse(e.CommandArgument.ToString());
            }
            catch
            {
                Response.Redirect("BatchDetail.aspx?id=" + batchId + "&message=IdError");
            }

            // Get prediction
            double prediction = 0;

            try
            {
                prediction = Double.Parse(PredictService.Single(batteryId).ToString());
            }
            catch
            {
                Response.Redirect("BatchDetail.aspx?id=" + batchId + "&message=PredictionError");
            }

            // Update battery in database
            BatteryDto battery = BatteryService.GetBattery(batteryId);

            battery.Lifetime = prediction;

            if (BatteryService.UpdateBattery(battery))
            {
                Response.Redirect("BatchDetail.aspx?id=" + batchId + "&message=PredictionSuccess");
            }
            else
            {
                Response.Redirect("BatchDetail.aspx?id=" + batchId + "&message=UpdateError");
            }
        }
        // Redirect to the home page or initialise page before it is presented to the User
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                // Redirect User if they do not have permission to view this page
                Security.RedirectIfNoQueryString();

                int?batchId = BatteryService.GetBatchId();
                int?userId  = BatchService.GetUserId(batchId);

                Security.RedirectIfUserIdMismatch(userId);
                Security.RedirectIfIsGuest();

                // Populate the page with entity data
                PopulatePage();

                // Display Success/Error message on page if appropriate
                DisplayMessage();
            }
        }
Example #20
0
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            _deferral = taskInstance.GetDeferral();
            var client = DigitServiceBuilder.Get();

            try
            {
                var opts = new DigitBLEOptions();
                if (opts.IsConfigured)
                {
                    var bleClient      = new DigitBLEClient(opts);
                    var batteryService = new BatteryService(bleClient, client);
                    await batteryService.TimeTriggeredMeasurement();
                }
            }
            catch (Exception e)
            {
                await client.LogAsync($"Unhandled background exception: {e.Message}", 3);
            }
            _deferral.Complete();
        }
        // Create Battery in the database
        protected void CreateBtn_Click(object sender, EventArgs e)
        {
            BatteryDto battery = null;
            int        batchId = 0;

            try
            {
                batchId = Int32.Parse(Security.GetQueryString());

                // Create Battery Object
                battery = new BatteryDto
                {
                    Battery_Ref        = BatteryReferenceTb.Text,
                    Cycle_Index        = Int32.Parse(CycleIndexTb.Text),
                    Charge_Capacity    = Double.Parse(ChargeCapacityTb.Text),
                    Discharge_Capacity = Double.Parse(DischargeCapacityTb.Text),
                    Charge_Energy      = Double.Parse(ChargeEnergyTb.Text),
                    Discharge_Energy   = Double.Parse(DischargeEnergyTb.Text),
                    dvdt = Double.Parse(dvdtTb.Text),
                    Internal_Resistance = Double.Parse(InternalResistanceTb.Text),
                    BatchId             = batchId,
                    Lifetime            = null
                };
            }
            catch
            {
                Response.Redirect("CreateBattery?id=" + batchId + "&message=Error");
            }

            // Add to database

            if (BatteryService.CreateBattery(battery))
            {
                Response.Redirect("Default?message=BatteryCreateSuccess");
            }
            else
            {
                Response.Redirect("CreateBattery?id" + batchId + "&message=Error");
            }
        }
        public void EnterChargeDataWithExistingBattery_ReturnsBattery()
        {
            var battery = new Battery {
                Id = 1, IsActive = true, Notes = "Test battery", PurchaseDate = DateTime.Now.AddMonths(-1), AccountId = 1
            };
            var charge = new BatteryCharge {
                Battery = battery, ChargedOn = DateTime.Now, Type = ChargeType.Standard, Mah = 1000
            };

            _batteryRepositoryMock.Setup(x => x.GetById(It.IsAny <int>())).Returns(() => battery);
            _batteryChargeRepositoryMock.Setup(x => x.Add(It.IsAny <BatteryCharge>())).Returns(charge);
            var service = new BatteryService(
                _batteryRepositoryMock.Object,
                _batteryTypeRepositoryMock.Object,
                _batteryChargeRepositoryMock.Object,
                _loggerMock.Object
                );

            var result = service.EnterChargeDataAsync(1, battery, charge.ChargedOn, charge.Type, charge.Mah);

            Assert.NotNull(result);
        }
Example #23
0
        Dictionary <string, string> GetData()
        {
            var batteryService = new BatteryService();
            var data           = new Dictionary <string, string>();

            data.Add(nameof(batteryService.IsCharging), batteryService.IsCharging.ToString());
            data.Add(nameof(batteryService.BatteryLevel), batteryService.BatteryLevel.ToString());
            data.Add("BatteryState", batteryService.BatteryState);
            data.Add("PowerType", batteryService.PowerType);

            try
            {
                foreach (var item in batteryService.AddInfo)
                {
                    data.Add(item.Title, item.Value);
                }
            }
            catch (NotImplementedException ex)
            {
                Debug.WriteLine($"Exception: {ex.Message}");
            }

            return(data);
        }
        public BatteryControllerForm()
        {
            InitializeComponent();

            batteryService = BatteryService.Instance;
        }
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            _deferral = taskInstance.GetDeferral();
            var client = DigitServiceBuilder.Get();

            try
            {
                RawNotification notification = (RawNotification)taskInstance.TriggerDetails;
                await client.LogAsync($"Received push {notification.Content}");

                var opts = new DigitBLEOptions();


                var content = JsonConvert.DeserializeObject <PushPayload>(notification.Content);
                switch (content.Action)
                {
                case PushActions.MeasureBattery:
                    if (opts.IsConfigured)
                    {
                        var bleClient      = new DigitBLEClient(opts);
                        var batteryService = new BatteryService(bleClient, client);
                        await batteryService.AddBatteryMeasurement();
                    }
                    else
                    {
                        await client.LogAsync($"Push error: no device configured.", 3);
                    }
                    break;

                case PushActions.SendTime:
                    if (opts.IsConfigured)
                    {
                        var bleClient = new DigitBLEClient(opts);
                        try
                        {
                            await bleClient.SetTime(DateTime.Now);
                        }
                        catch (DigitBLEExpcetion e)
                        {
                            await client.LogAsync($"Could not send time: {e.Message}", 3);
                        }
                    }
                    else
                    {
                        await client.LogAsync($"Push error: no device configured.", 3);
                    }
                    break;

                case PushActions.SendLocation:
                    var locationService = new LocationService(client);
                    await locationService.SendCurrentLocation();

                    break;

                default: break;
                }
            }
            catch (Exception e)
            {
                await client.LogAsync($"Unhandled background exception: {e.Message}", 3);
            }
            _deferral.Complete();
        }
Example #26
0
        private async void RetrieveBatteryService(GattDeviceService gattDeviceService)
        {
            await BatteryService.Start(gattDeviceService);

            BatteryService.ValueChangeCompleted += BatteryService_ValueChangeCompleted;
        }
 public BatteryServiceTests()
 {
     this.batteryService = new BatteryService();
     this.helper         = new TestsHelper();
 }
 public BatteryViewerForm()
 {
     batteryService = BatteryService.Instance;
     InitializeComponent();
 }
 public MainFormPi()
 {
     batteryService = BatteryService.Instance;
     InitializeComponent();
 }