Example #1
0
        private Guid AddBonus(Data.Bonus bonus)
        {
            bonus.Id       = Guid.NewGuid();
            bonus.Template = _repository.Templates
                             .Include(o => o.Info)
                             .Include(o => o.Info.Brand)
                             .Single(a => a.Id == bonus.Template.Id &&
                                     a.Version == bonus.Template.Version);

            bonus.CreatedOn = DateTimeOffset.Now.ToBrandOffset(bonus.Template.Info.Brand.TimezoneId);
            bonus.CreatedBy = _actorInfoProvider.Actor.UserName;
            bonus.Statistic = new BonusStatistic();

            _repository.Bonuses.Add(bonus);
            _repository.SaveChanges();

            _eventBus.Publish(new BonusCreated
            {
                AggregateId  = bonus.Id,
                Description  = bonus.Description,
                Name         = bonus.Name,
                Code         = bonus.Code,
                BrandId      = bonus.Template.Info.Brand.Id,
                BonusType    = bonus.Template.Info.TemplateType,
                IsActive     = bonus.IsActive,
                EventCreated = bonus.CreatedOn
            });

            return(bonus.Id);
        }
Example #2
0
        private Guid UpdateBonus(Data.Bonus updatedBonus)
        {
            AddUpdatedBonus(updatedBonus);
            _eventBus.Publish(new BonusUpdated
            {
                AggregateId  = updatedBonus.Id,
                Description  = updatedBonus.Description,
                EventCreated = updatedBonus.UpdatedOn.Value
            });

            return(updatedBonus.Id);
        }
Example #3
0
        private void AddUpdatedBonus(Data.Bonus updatedBonus)
        {
            updatedBonus.Template = _repository.Templates.Single(a => a.Id == updatedBonus.Template.Id && a.Version == updatedBonus.Template.Version);

            var firstBonusVersion = _repository.Bonuses
                                    .Where(bonus => bonus.Id == updatedBonus.Id)
                                    .OrderBy(b => b.CreatedOn)
                                    .First();

            updatedBonus.CreatedOn = firstBonusVersion.CreatedOn;
            updatedBonus.CreatedBy = firstBonusVersion.CreatedBy;
            updatedBonus.UpdatedOn = DateTimeOffset.Now.ToBrandOffset(updatedBonus.Template.Info.Brand.TimezoneId);
            updatedBonus.UpdatedBy = _actorInfoProvider.Actor.UserName;

            //to persist bonus statistic
            updatedBonus.Statistic = _repository.GetCurrentVersionBonuses().Single(a => a.Id == updatedBonus.Id).Statistic;
            updatedBonus.Version++;

            _repository.Bonuses.Add(updatedBonus);
            _repository.SaveChanges();
        }
Example #4
0
 public Bonus(Data.Bonus data)
 {
     Data = data;
 }