public async Task <IActionResult> UpdateAsync(Guid id, [FromBody] UpdateMeasureCategoryCommand command)
        {
            bool validCommand = command.Validate();

            if (!validCommand)
            {
                return(CreateErrorResponse(command.ValidationResult));
            }

            MeasureCategory measureCategory = await _measureCategoryRepository.GetDefaultByIdAsync(id);

            if (measureCategory == null)
            {
                return(NotFound());
            }

            measureCategory.Update(
                command.Name,
                command.Description,
                command.IsFavorite
                );

            await _measureCategoryRepository.UpdateAsync(measureCategory);

            return(await CommitAsync());
        }
Пример #2
0
        public async Task <IActionResult> GetEntriesByCategoryAsync(Guid categoryId, DateTime startDate, DateTime endDate)
        {
            MeasureCategory measureCategory = await _measureCategoryRepository.GetByIdAndProfileIdAsync(categoryId, _currentProfileId);

            if (measureCategory == null)
            {
                return(CreateErrorResponse("Erro de categoria", "Nenhuma categoria de medição com esse Id foi encontrada no banco de dados."));
            }

            CategoryStatistics statistics = await _measureStatisticsDomainService.GetEntriesByCategoryAsync(measureCategory, startDate, endDate);

            return(CreateResponse(statistics));
        }
        public async Task <IActionResult> RemoveAsync(Guid id)
        {
            MeasureCategory measureCategory = await _measureCategoryRepository.GetDefaultByIdAsync(id);

            if (measureCategory == null)
            {
                return(NotFound());
            }

            await _measureCategoryRepository.RemoveAsync(measureCategory);

            return(await CommitAsync());
        }
Пример #4
0
        private async Task <bool> EnsureMeasureCategoriesExists(List <MeasureLineDto> measureLines)
        {
            foreach (MeasureLineDto measureLine in measureLines)
            {
                MeasureCategory measureCategory = await _measureCategoryRepository.GetByIdAndProfileIdAsync(measureLine.MeasureCategoryId, _currentProfileId);

                if (measureCategory == null)
                {
                    return(false);
                }
            }

            return(true);
        }
        public async Task <CategoryStatistics> GetEntriesByCategoryAsync(MeasureCategory measureCategory, DateTime startDate, DateTime endDate)
        {
            List <Measure> filteredMeasures = await GetMeasuresAsync(startDate, endDate);

            List <StatisticEntry> entries = new List <StatisticEntry>();

            foreach (Measure measure in filteredMeasures)
            {
                measure.MeasureLines
                .Where(ml => ml.MeasureCategoryId == measureCategory.Id)
                .ToList()
                .ForEach(ml => entries.Add(new StatisticEntry(measure.MeasureDate, ml.Value)));
            }

            return(new CategoryStatistics(measureCategory.Id, measureCategory.Name, entries.OrderByDescending(se => se.DateMeasure).ToList()));
        }
        public async Task <IActionResult> RegisterAsync([FromBody] RegisterMeasureCategoryCommand command)
        {
            bool validCommand = command.Validate();

            if (!validCommand)
            {
                return(CreateErrorResponse(command.ValidationResult));
            }

            MeasureCategory measureCategory = new MeasureCategory(
                command.Name,
                command.Description,
                command.IsFavorite
                );

            await _measureCategoryRepository.RegisterAsync(measureCategory);

            return(await CommitAsync());
        }
Пример #7
0
        public async Task <IActionResult> GetEntriesByCategoriesAsync(DateTime startDate, DateTime endDate, [FromBody] List <Guid> categoryIds)
        {
            List <MeasureCategory> measureCategories = new List <MeasureCategory>();

            foreach (Guid categoryId in categoryIds)
            {
                MeasureCategory measureCategory = await _measureCategoryRepository.GetByIdAndProfileIdAsync(categoryId, _currentProfileId);

                if (measureCategory == null)
                {
                    return(CreateErrorResponse("Erro de categoria", $"Nenhuma categoria de medição com esse Id {categoryId} foi encontrada no banco de dados."));
                }

                measureCategories.Add(measureCategory);
            }

            List <CategoryStatistics> statistics = await _measureStatisticsDomainService.GetEntriesByCategoriesAsync(measureCategories, startDate, endDate);

            return(CreateResponse(statistics));
        }
Пример #8
0
        public async Task <MeasureResponse> GetMeasure(MeasureType measureType, MeasureCategory measureCategory, long?startDate = null, long?endDate = null, int?offset = null, long?lastUpdate = null)
        {
            try
            {
                var paramaters = new Dictionary <string, object>
                {
                    { "action", ApiConstants.Measure_GetMeasureEndPoint },
                    { "meastype", ((int)measureType).ToString() },
                    { "category", ((int)measureCategory).ToString() },
                    { "startdate", startDate },
                    { "enddate", endDate },
                    { "offset", offset },
                    { "lastupdate", lastUpdate },
                }.ToNullableParamaters();

                return(await ExecuteGetAsync <MeasureResponse>(ApiConstants.Measure_PathSegment, paramaters));
            }
            catch (Exception)
            {
                return(null);
            }
        }
        public async Task <IActionResult> GetByIdAsync(Guid id)
        {
            MeasureCategory measureCategory = await _measureCategoryRepository.GetByIdAndProfileIdAsync(id, _currentProfileId);

            return(CreateResponse(measureCategory));
        }
        public async Task <IActionResult> GetByIdAsync(Guid id)
        {
            MeasureCategory measureCategory = await _measureCategoryRepository.GetDefaultByIdAsync(id);

            return(CreateResponse(measureCategory));
        }
Пример #11
0
 public MeasureLine(MeasureCategory measureCategory, decimal value)
 {
     MeasureCategory   = measureCategory;
     MeasureCategoryId = measureCategory.Id;
     Value             = value;
 }