Пример #1
0
        public async Task <IActionResult> GetDiscounts([FromBody, CustomizeValidator(RuleSet = "SearchCriteria")] SearchCriteria searchCriteria)
        {
            var incomingUser = ControllerContext.IncomingUser();

            searchCriteria.IncomingUser = incomingUser;

            if (searchCriteria.IsNotAdministratorSortByDateCreate(incomingUser.Role))
            {
                _logger.LogWarning("Get Discounts. SearchCriteria: {@searchCriteria}. Result is Empty, user does not have permission. User: {@incomingUser}.", searchCriteria, incomingUser);
                return(Unauthorized());
            }

            var discounts = (await _discounts.GetDiscountsAsync(searchCriteria)).TransformUsersPromocodes(incomingUser);

            if (discounts == null || discounts.Count == 0)
            {
                _logger.LogWarning("Get Discounts. SearchCriteria: {@searchCriteria}. Result is Empty. User: {@incomingUser}.", searchCriteria, incomingUser);
                return(NotFound("No discounts found."));
            }

            var discountsResponse = discounts.ToListDiscountResponse(searchCriteria.SearchLanguage);

            _logger.LogInformation("Get Discounts. SearchCriteria: {@searchCriteria}. Result: {@discountsResponse}. User: {@incomingUser}.", searchCriteria, discountsResponse, incomingUser);
            return(Ok(discountsResponse));
        }
Пример #2
0
        public async Task <IActionResult> DeleteFromSubscriptions([FromRoute] Guid discountId, [FromRoute] Guid promocodeId)
        {
            var incomingUser   = ControllerContext.IncomingUser();
            var userPromocodes = await _discounts.RemoveFromSubscriptionsAsync(discountId, incomingUser.Id, promocodeId);

            _logger.LogInformation("Delete From Subscriptions. Guid: {@discountId}. Promocode id: {@promocodeId}. Result: {@userPromocodes}. User: {@incomingUser}.", discountId, promocodeId, userPromocodes, incomingUser);

            return(Ok(userPromocodes));
        }
Пример #3
0
        public async Task <IActionResult> AddToSubscriptions([FromRoute] Guid id)
        {
            var incomingUser   = ControllerContext.IncomingUser();
            var userPromocodes = await _discounts.AddToSubscriptionsAsync(id, incomingUser.Id);

            _logger.LogInformation("Add To Subscriptions. Guid: {@id}. Result: {@userPromocodes}. User: {@incomingUser}.", id, userPromocodes, incomingUser);

            return(Ok(userPromocodes));
        }
Пример #4
0
        public async Task <IActionResult> DeleteFromFavorites([FromRoute] Guid id)
        {
            var incomingUser = ControllerContext.IncomingUser();
            await _discounts.RemoveFromFavoritesAsync(id, incomingUser.Id);

            _logger.LogInformation("Delete From Favorites. Guid: {@id}. Result: deleted. User: {@incomingUser}.", id, incomingUser);

            return(Ok());
        }
Пример #5
0
        public async Task <IActionResult> DeleteDiscounts([FromBody] List <Guid> ids)
        {
            var incomingUser = ControllerContext.IncomingUser();
            await _discounts.RemoveDiscountAsync(ids, incomingUser.Id);

            _logger.LogInformation("Delete Discounts. Guid[]: {@ids}. Result: deleted. User: {@incomingUser}", ids, incomingUser);

            return(Ok());
        }
Пример #6
0
        public async Task <IActionResult> GetUsersStatistics()
        {
            var incomingUser = ControllerContext.IncomingUser();

            var statistics = await _statistics.GetUsersStatistics();

            _logger.LogInformation("Get Users Statistics. Result: {@statistics}. User: {@incomingUser}.", statistics, incomingUser);
            return(Ok(statistics));
        }
Пример #7
0
        public async Task <IActionResult> GetCompanyNames([FromRoute, CustomizeValidator(RuleSet = "SearchString")] string companyName)
        {
            var incomingUser = ControllerContext.IncomingUser();

            var companies = await _repository.GetCompanyNamesAsync(companyName);

            if (companies.IsNullOrEmpty())
            {
                _logger.LogWarning("Get Company names. Company name: {companyName}. Result is Empty. User: {@incomingUser}.", companyName, incomingUser);
                return(NotFound("No company names found."));
            }

            _logger.LogInformation("Get Company names. Company name: {companyName}. Result: {@companies}. User: {@incomingUser}.", companyName, companies, incomingUser);
            return(Ok(companies));
        }
Пример #8
0
        public async Task <IActionResult> GetCountriesAll([FromRoute] LanguageOption language)
        {
            var incomingUser = ControllerContext.IncomingUser();

            var countries = await _repository.GetCountriesAsync(string.Empty, language);

            if (countries.IsNullOrEmpty())
            {
                _logger.LogWarning("Get all countries. Language: {@language}. Result Empty. User: {@incomingUser}.", language, incomingUser);
                return(NotFound("No countries found."));
            }

            _logger.LogInformation("Get all countries. Language: {@language}. Result: {@countries}. User: {@incomingUser}.", language, countries, incomingUser);
            return(Ok(countries));
        }
Пример #9
0
        public async Task <IActionResult> GetCountries([FromRoute, CustomizeValidator(RuleSet = "SearchString")] string searchCountry)
        {
            var incomingUser = ControllerContext.IncomingUser();

            var countries = await _repository.GetCountriesAsync(searchCountry, searchCountry.GetLanguageFromFirstLetter());

            if (countries.IsNullOrEmpty())
            {
                _logger.LogWarning("Get countries. Country: {searchCountry}. Result is Empty. User: {@incomingUser}.", searchCountry, incomingUser);
                return(NotFound("No countries found."));
            }

            _logger.LogInformation("Get countries. Country: {searchCountry}. Result: {@countries}. User: {@incomingUser}.", searchCountry, countries, incomingUser);
            return(Ok(countries));
        }
Пример #10
0
        public async Task <IActionResult> GetCitiesAll([FromRoute] LanguageOption language, [FromRoute, CustomizeValidator(RuleSet = "SearchString")] string searchCountry)
        {
            var incomingUser = ControllerContext.IncomingUser();

            var cities = await _repository.GetCitiesAsync(searchCountry, string.Empty, language);

            if (cities.IsNullOrEmpty())
            {
                _logger.LogWarning("Get All Cities. Language: {@language}. Country: {searchCountry}. Result is Empty. User: {@incomingUser}.", language, searchCountry, incomingUser);
                return(NotFound("No cities found."));
            }

            _logger.LogInformation("Get All Cities. Language: {@language}. Country: {searchCountry}. Result: {@cities}. User: {@incomingUser}.", language, searchCountry, cities, incomingUser);
            return(Ok(cities));
        }
Пример #11
0
        public async Task <IActionResult> AddVote([FromRoute] Guid id, [FromRoute, CustomizeValidator(RuleSet = "VoteValue")] int value)
        {
            var incomingUser = ControllerContext.IncomingUser();
            var result       = await _discounts.VoteDiscountAsync(value, id, incomingUser.Id);

            if (!result)
            {
                _logger.LogWarning("Add Vote. Guid: {@id}. Vote: {@value}. Result is Empty, user already voted. User id: {@incomingUser}.", id, value, incomingUser);
                return(Forbid());
            }

            _logger.LogInformation("Add Vote. Guid: {@id}. Vote: {@value}. Result: user voted. User: {@incomingUser}.", id, value, incomingUser);

            return(Ok());
        }
Пример #12
0
        public async Task <IActionResult> GetSubscriptions([FromRoute] Guid id)
        {
            var incomingUser   = ControllerContext.IncomingUser();
            var userPromocodes = await _discounts.GetSubscriptionsAsync(id, incomingUser.Id);

            if (userPromocodes.IsEmpty())
            {
                _logger.LogWarning("Get Subscriptions. Guid: {@id}. Result is Empty. User: {@incomingUser}.", id, incomingUser);
                return(BadRequest("Not found the subscriptions of discount."));
            }

            _logger.LogInformation("Gets subscriptions. Guid: {@id}. Result: {@userPromocodes}. User: {@incomingUser}.", id, userPromocodes, incomingUser);

            return(Ok(userPromocodes));
        }
Пример #13
0
        public async Task <IActionResult> GetTags([FromRoute, CustomizeValidator(RuleSet = "SearchString")] string name)
        {
            var incomingUser = ControllerContext.IncomingUser();

            var tags = await _repository.GetTagAsync(name);

            if (tags.IsNullOrEmpty())
            {
                _logger.LogWarning("Get Tags. Name: {name}. Result is Empty. User: {@incomingUser}.", name, incomingUser);
                return(NotFound("No tags found."));
            }

            _logger.LogInformation("Get Tags. Name: {name}. Result: {@tags}. User: {@incomingUser}.", name, tags, incomingUser);
            return(Ok(tags));
        }
Пример #14
0
        public async Task <IActionResult> GetUpsertDiscount([FromRoute] Guid id)
        {
            var incomingUser = ControllerContext.IncomingUser();
            var discount     = (await _discounts.GetDiscountByUidAsync(id));

            if (discount.IsEmpty())
            {
                _logger.LogWarning("Get Upsert Discount. Guid: {@id}. Result is Empty. User: {@incomingUser}.", id, incomingUser);
                return(NotFound("No discount found."));
            }

            var response = discount.ToUpsertDiscountRequest();

            _logger.LogInformation("Get Upsert Discount. Guid: {@id}. Result: {@response}. User: {@incomingUser}.", id, response, incomingUser);
            return(Ok(response));
        }
Пример #15
0
        public async Task <IActionResult> GetDiscount([FromRoute] Guid id, [FromRoute] LanguageOption language)
        {
            var incomingUser = ControllerContext.IncomingUser();
            var discount     = (await _discounts.GetDiscountByUidAsync(id)).TransformUsersPromocodes(incomingUser);

            if (discount.IsEmpty())
            {
                _logger.LogWarning("Get Discount. Guid: {@id}. Language: {@language}. Result is Empty.  User: {@incomingUser}.", id, language, incomingUser);
                return(NotFound("No discount found."));
            }

            var response = discount.Translate(language).ToDiscountResponse();

            _logger.LogInformation("Get Discount. Guid: {@id}. Language: {@language}. Result: {@response}.  User: {@incomingUser}.", id, language, response, incomingUser);
            return(Ok(response));
        }
Пример #16
0
        public async Task <IActionResult> GetUser(Guid id)
        {
            var incomingUser = ControllerContext.IncomingUser();

            var user = await _repository.GetUserByUidAsync(id);

            var employee = user.ToEmployee();

            if (employee.IsEmpty())
            {
                _logger.LogWarning("Get User. Guid: {@id}. Result is Empty. User: {@incomingUser}.", id, incomingUser);
                return(NotFound("No employee found."));
            }

            _logger.LogInformation("Get User. Guid: {@id}. Result: {@employee}. User: {@incomingUser}.", id, employee, incomingUser);
            return(Ok(employee));
        }
Пример #17
0
        public async Task <IActionResult> UpsertDiscount([FromBody, CustomizeValidator(RuleSet = "UpsertDiscount")] UpsertDiscountRequest upsertDiscountRequest)
        {
            var incomingUser = ControllerContext.IncomingUser();
            var user         = (await _users.GetUserByUidAsync(incomingUser.Id)).ToUserLikeEmployee();

            var discount = upsertDiscountRequest.ToDiscount().AddChangeUserTime(user);

            var responseDiscount = await _discounts.UpsertDiscountAsync(discount);

            if (responseDiscount.IsEmpty())
            {
                _logger.LogWarning("Upsert Discount. UpsertDiscountRequest: {@upsertDiscountRequest}. Result is Empty. User: {@incomingUser}.", upsertDiscountRequest, incomingUser);
                return(BadRequest("No discounts were create or update."));
            }

            var response = responseDiscount.ToUpsertDiscountRequest();

            _logger.LogInformation("Upsert Discount. UpsertDiscountRequest: {@upsertDiscountRequest}. Result: {@response}. User: {@incomingUser}.", upsertDiscountRequest, response, incomingUser);
            return(Ok(response));
        }
Пример #18
0
        public async Task <IActionResult> GetDiscountsStatistics([FromBody] DiscountsStatisticsCriteria criteria)
        {
            var incomingUser = ControllerContext.IncomingUser();

            if (criteria.CreateEndDate < criteria.CreateStartDate)
            {
                _logger.LogWarning("Get Discounts Statistics. Criteria: {@criteria}. Result is not enabled, user does not have permission. User: {@incomingUser}.", criteria, incomingUser);
                return(BadRequest("CreateEndDate field must be greater than CreateStartDate field."));
            }

            var statistics = await _statistics.GetDiscountsStatistics(criteria);

            if (statistics == null)
            {
                _logger.LogWarning("Get Discounts Statistics. Criteria: {@criteria}. Result is Empty. User: {@incomingUser}.", criteria, incomingUser);
                return(NotFound("Can't generate statistics for the specified criteria."));
            }

            _logger.LogInformation("Get Discounts Statistics. Criteria: {@criteria}. Result: {@statistics}. User: {@incomingUser}.", criteria, statistics, incomingUser);
            return(Ok(statistics));
        }