Example #1
0
        public ValidationResult ValidateThatBrandCanBeDeactivated(DeactivateBrandRequest request)
        {
            var brand = GetBrandForDeactivation(request.BrandId);

            brand.Remarks = request.Remarks;
            var deactivateBrandData = new DeactivateBrandValidationData
            {
                Brand = brand
            };
            var validator = new DeactivateBrandValidator();

            return(validator.Validate(deactivateBrandData));
        }
Example #2
0
        public void DeactivateBrand(DeactivateBrandRequest request)
        {
            var brand = _repository.Brands.SingleOrDefault(x => x.Id == request.BrandId);

            if (brand != null)
            {
                brand.Remarks = request.Remarks;
            }

            var deactivateBrandData = new DeactivateBrandValidationData {
                Brand = brand
            };

            var validationResult = new DeactivateBrandValidator().Validate(deactivateBrandData);

            if (!validationResult.IsValid)
            {
                throw new RegoValidationException(validationResult);
            }

            using (var scope = CustomTransactionScope.GetTransactionScope())
            {
                brand.Status      = BrandStatus.Deactivated;
                brand.UpdatedBy   = brand.DeactivatedBy = _actorInfoProvider.Actor.UserName;
                brand.DateUpdated = brand.DateDeactivated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId);

                _repository.SaveChanges();

                _eventBus.Publish(new BrandDeactivated
                {
                    Id           = request.BrandId,
                    EventCreated = DateTimeOffset.Now.ToBrandOffset(brand.TimezoneId),
                });
                scope.Complete();
            }
        }