private async Task <T> CreateInternal <T>(MarketerInput input) where T : MarketerOutput { _logger.LogTrace(GetLogMessage($@"Person Id: {input.PersonId}")); var marketer = await Repository.Queryable().Where(x => x.Id == input.PersonId) .FirstOrDefaultAsync(); if (marketer == null) { marketer = new Marketer { Id = input.PersonId }; marketer.InjectFrom(input); await Repository.UpdateAsync(marketer, true); var output = await GetById <T>(input.PersonId); await Task.Run(() => { RaiseEvent(new MarketerCreatedEvent <T> { Marketer = output }); }); return(output); } throw new ApplicationException("Person is already a marketer"); }
public Task <T> Create <T>(MarketerInput input) where T : MarketerOutput { return(CreateInternal <T>(input)); }