Пример #1
0
        public async Task <ServiceResult <string> > GetStat(ClaimsPrincipal user, int groupId, string stat)
        {
            var group = groupsRepository.Get(groupId);

            if (group is null)
            {
                return(ServiceResult <string> .Error(404, "Group was not found"));
            }

            var authorizationResult = await authorizationService.AuthorizeAsync(user, group, GroupOperations.Write);

            if (!authorizationResult.Succeeded)
            {
                return(ServiceResult <string> .Error(401, "Only group admin can view statistics"));
            }

            switch (stat.ToLower())
            {
            case "average":
                return(ServiceResult <string> .Success(repository.GetAverageTransaction(groupId)));

            case "biggestspender":
                return(ServiceResult <string> .Success(repository.GetBiggestSpender(groupId)));

            case "smallestspender":
                return(ServiceResult <string> .Success(repository.GetSmallestSpender(groupId)));

            case "biggestdonator":
                return(ServiceResult <string> .Success(repository.GetBiggestDonator(groupId)));

            case "smallestdonator":
                return(ServiceResult <string> .Success(repository.GetSmallestDonator(groupId)));

            case "users":
                return(ServiceResult <string> .Success(repository.GetSpendingByUsers(groupId)));

            case "categories":
                return(ServiceResult <string> .Success(repository.GetSpendingByCategories(groupId)));

            default:
                return(ServiceResult <string> .Error(404, "stat was not found"));
            }
        }