Exemplo n.º 1
0
        public async Task Create_PostAnalystics_V2_UnitTypeWatt_Watt()
        {
            string panelId = "1234567890987654";

            var mockPanels = new List <Panel>()
            {
                new Panel
                {
                    Brand     = "Areva",
                    Latitude  = 12.345678,
                    Longitude = 98.765543,
                    Serial    = panelId
                }
            }.AsQueryable().BuildMock();

            _panelRepositoryMock.Setup(m => m.Query()).Returns(mockPanels.Object);

            var oneHourElectricityAmountModel = new OneHourElectricityAmountModel
            {
                Id       = 1,
                DateTime = DateTime.Now,
                Amount   = 100,
                TypeWatt = UnitTypeWatt.Watt
            };
            // Act
            var result = await _analyticsController.Post(panelId, oneHourElectricityAmountModel);

            // Assert
            Assert.NotNull(result);

            var createdResult = result as CreatedResult;

            Assert.NotNull(createdResult);
            Assert.Equal(201, createdResult.StatusCode);

            var oneHourElectricityAmountModelReturn = createdResult.Value as OneHourElectricityAmountModel;

            Assert.NotNull(oneHourElectricityAmountModelReturn);

            // Sent Watt, Return KiloWatt
            double amountKiloWatt = oneHourElectricityAmountModel.Amount / 1000;

            Assert.Equal(amountKiloWatt, oneHourElectricityAmountModelReturn.Amount);
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Post([FromRoute, StringLength(16), Required] string panelId, [FromBody] OneHourElectricityAmountModel value)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!_panelRepository.Query().Any(x => x.Serial.Equals(panelId, StringComparison.CurrentCultureIgnoreCase)))
            {
                return(BadRequest());
            }

            double amountKiloWatt = 0;

            switch (value.TypeWatt)
            {
            case UnitTypeWatt.KiloWatt:
                amountKiloWatt = value.Amount;
                break;

            case UnitTypeWatt.Watt:
                amountKiloWatt = value.Amount / 1000;
                break;
            }

            var oneHourElectricityContent = new OneHourElectricity
            {
                PanelId  = panelId,
                KiloWatt = amountKiloWatt,
                DateTime = DateTime.UtcNow
            };

            await _analyticsRepository.InsertAsync(oneHourElectricityContent);

            var result = new OneHourElectricityAmountModel
            {
                Id       = oneHourElectricityContent.Id,
                Amount   = oneHourElectricityContent.KiloWatt,
                TypeWatt = UnitTypeWatt.KiloWatt,
                DateTime = oneHourElectricityContent.DateTime
            };

            return(Created($"panel/v2/{panelId}/analytics/{result.Id}", result));
        }