public string CreateProspect(CreateProspectModel model) { try { var validationResult = model.Evaluate(); if (validationResult.IsFailure) { return(validationResult.Error); } var personId = new PersonId(Option.Some(model.PersonId)); var accomodationNumber = AccomodationNumber.Create(model.AccomodationNumber); var accomodationId = new AccomodationId(accomodationNumber.Value); this.prospectService.CreateProspect(personId, accomodationId); return("Person become a prospect on this accomodation!"); } catch (AccomodationAlreadySoldException) { return("This accomodation is already sold"); } catch (Exception) { return("An unknow error was thrown"); } }
public void CreateProspect(PersonId person, AccomodationId accomodation) { this.ThrowExceptionIfAccomodationDoesNotExistInRepository(accomodation); this.ThrowExceptionIfPersonDoesNotExistInRepository(person); this.ThrowExceptionWhenProscpectIsAlreadyLinkedToAccomodation(person, accomodation); this.personRepository.CreateProspect(person, accomodation); }
private void ThrowExceptionIfAccomodationDoesNotExistInRepository(AccomodationId accomodation) { var accomodationExist = this.accomodationQuery.Exist(accomodation); if (!accomodationExist) { throw new AccomodationDoesNotExistException(); } }
public void SellAccomodation(PersonId person, AccomodationId accomodation) { this.ThrowExceptionIfAccomodationDoesNotExistInRepository(accomodation); this.ThrowExceptionIfPersonDoesNotExistInRepository(person); this.ThrowExceptionWhenAccomodationIsAlreadySold(accomodation); this.personRepository.SellAccomodation(person, accomodation); this.mediator.Publish(new AccomodationSoldDomainEvent(accomodation)); }
public void SellAccomodation(PersonId person, AccomodationId accomodation) { var personEntity = Database.Persons.Single(p => p.Id == person.SurrogateId.ValueOrFailure()); var accomodationEntity = Database.Accomodations.Single(p => p.Number == accomodation.Number); var client = new ClientEntity { Person = personEntity, Accomodation = accomodationEntity }; Database.Clients.Add(client); }
public void CreateProspect(PersonId person, AccomodationId accomodation) { var personEntity = Database.Persons.Single(p => p.Id == person.SurrogateId.ValueOrFailure()); var accomodationEntity = Database.Accomodations.Single(p => p.Number == accomodation.Number); var prospect = new ProspectEntity { Person = personEntity, Accomodation = accomodationEntity }; Database.Prospects.Add(prospect); }
public string SellAccomodation(SellAccomodationModel model) { try { var validationResult = model.Evaluate(); if (validationResult.IsFailure) { return(validationResult.Error); } var personId = new PersonId(Option.Some(model.PersonId)); var accomodationNumber = AccomodationNumber.Create(model.AccomodationNumber); var accomodationId = new AccomodationId(accomodationNumber.Value); this.clientService.SellAccomodation(personId, accomodationId); return("Accomodation Sold !"); } catch (AccomodationAlreadySoldException) { return("The accomodation is already sold"); } catch (AccomodationDoesNotExistException) { return("The accomodation does not exist"); } catch (PersonDoesNotExistException) { return("The person does not exist"); } catch (Exception) { return("An unknow error was thrown"); } }
public AccomodationSoldDomainEvent(AccomodationId accomodation) { this.Accomodation = accomodation; }
private void ThrowExceptionWhenAccomodationIsAlreadySold(AccomodationId accomodation) { var accomodationAlreadySold = this.personQuery.IsAccomodationSold(accomodation); if (accomodationAlreadySold) throw new AccomodationAlreadySoldException(); }
private void ThrowExceptionWhenProscpectIsAlreadyLinkedToAccomodation(PersonId person, AccomodationId accomodation) { var isAlreadyProspectOnThisAccomodation = this.personQuery.IsProspectOnThisAccomodation(person, accomodation); if (isAlreadyProspectOnThisAccomodation) { throw new AlreadyProspectOnAccomodationException(); } }
public IEnumerable <Person> GetProspects(AccomodationId accomodation) { return(Database.Prospects .Where(p => p.Accomodation.Number == accomodation.Number) .Select(p => p.Person.ToBusiness())); }
public bool IsAccomodationSold(AccomodationId accomodation) { return(Database.Clients.Any(c => c.Accomodation.Number == accomodation.Number)); }
public bool IsProspectOnThisAccomodation(PersonId person, AccomodationId accomodation) { return(Database.Prospects .Where(p => p.Person.Id == person.SurrogateId.ValueOrFailure()) .Any(p => p.Accomodation.Number == accomodation.Number)); }
public bool Exist(AccomodationId accomodation) { return(Database.Accomodations.Any(a => a.Number == accomodation.Number)); }
public Accomodation Get(AccomodationId accomodation) { var accomodationEntity = Database.Accomodations.First(p => p.Number == accomodation.Number); return(accomodationEntity.ToBusiness()); }