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); }
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); }
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(); }
public Bonus(Data.Bonus data) { Data = data; }