public Task <Result <Models.Responses.ManagerContext> > Modify(Models.Requests.Manager managerRequest) { return(_managerContext.GetManager() .Check(manager => ValidateRequest(managerRequest)) .Bind(Update) .Map(Build)); async Task <Result <Common.Models.ManagerContext> > Update(Common.Models.Manager manager) { manager.FirstName = managerRequest.FirstName; manager.LastName = managerRequest.LastName; manager.Title = managerRequest.Title; manager.Position = managerRequest.Position; manager.Phone = managerRequest.Phone; manager.Fax = managerRequest.Fax; manager.Updated = _dateTimeProvider.UtcNow(); var entry = _dbContext.Managers.Update(manager); await _dbContext.SaveChangesAsync(); _dbContext.DetachEntry(entry.Entity); var managerRelation = await _managerContext.GetManagerRelation(); if (managerRelation.IsFailure) { return(Result.Failure <Common.Models.ManagerContext>(managerRelation.Error)); } return(CollectManagerContext(manager, managerRelation.Value)); } }
private Result ValidateRequest(Models.Requests.Manager managerRequest) => ValidationHelper.Validate(managerRequest, new ManagerValidator());