private Result <UserPerson> InitiateAccout(CreatePersonAccountCommand request) { var curDate = _dateTime.Now; var result = new UserPerson() { UserId = request.Email ?? request.UserId, Person = new Person() { FirstName = request.FirstName, LastName = request.LastName, ModifiedDate = curDate, } }; if (request.Email != null) { result.Person.PersonContact = new[] { new PersonContact() { Name = "Email", Value = request.Email, Url = $"mailto:{request.Email}", ModifiedDate = curDate } }; } return(result); }
public async Task <Result <int> > Handle(CreatePersonAccountCommand request, CancellationToken cancellationToken) { await Task.Yield(); return(GetExistingPersonId(request.UserId) .OnFailureCompensate(() => { return InitiateAccout(request) .Tap(i => _context.Add(i)) .Map(p => { _context.SaveChanges(); return p.PersonId; }); })); }