private async Task HandleAsync(AddOwnerEvent @event) { var rentalProperty = _context.RentalProperty.Include(a => a.Address).FirstOrDefault(p => p.OriginalId == @event.PropertyId); if (rentalProperty != null) { var address = new OwnerAddress(@event.StreetNumber, @event.City, @event.StateProv, @event.Country, @event.ZipPostCode); var owner = new RentalPropertyOwner(@event.OriginalId, @event.FirstName, @event.LastName, @event.ContactEmail, @event.ContactTelephone1, @event.ContactTelephone2, rentalProperty.Id, address, DateTime.Now, DateTime.Now); _context.Add(owner); try { await _context.SaveChangesAsync(); Log.Information("Owner {Owner} has been added to property {Property} successfully", @event.FirstName + " " + @event.LastName, rentalProperty.PropertyName); } catch (Exception ex) { Log.Error(ex, "Error while addinng owner {Owner} to {Property}.", @event.FirstName + " " + @event.LastName, rentalProperty.PropertyName); throw ex; } } else { Log.Information("The rental property with Id: {PrpertyId} does not exist.", @event.PropertyId); } //throw new NotImplementedException(); }
private async Task HandleAsync(AddOwnerEvent @event) { var rentalProperty = _context.RentalProperty.FirstOrDefault(p => p.OriginalId == @event.PropertyId); if (rentalProperty != null) { var address = new OwnerAddress(@event.StreetNumber, @event.City, @event.StateProv, @event.Country, @event.ZipPostCode); var owner = new RentalPropertyOwner(@event.OriginalId, @event.FirstName, @event.LastName, @event.ContactEmail, @event.ContactTelephone1, @event.ContactTelephone2, address, rentalProperty.Id, DateTime.Now, DateTime.Now); _context.Add(owner); try { await _context.SaveChangesAsync(); Log.Information("Owner {Owner} has been added to property {Property} successfully", @event.FirstName + " " + @event.LastName, rentalProperty.PropertyName); // Send message so that lease service can consume to queue app_approved // need to make sure the rental property exists in Lease service then send message if it does. //************************************************ // It may not need this because as ApproveApplicaiton Event will send property including owner so that it should be created in Lease service already //************************************************ /* * AddOwnerEvent e = new AddOwnerEvent(new Guid(), @event.PropertyId, @event.UserName, @event.FirstName, @event.LastName, * @event.ContactEmail, @event.ContactTelephone1, @event.ContactTelephone2, @event.OnlineAccessEnbaled, * @event.UserAvartaImgUrl, @event.IsActive, @event.RoleId, @event.Notes, @event.StreetNumber, * @event.City, @event.StateProv, @event.ZipPostCode, @event.Country); * * * try * { * await _messagePublisher.PublishMessageAsync(e.MessageType, e, "asset_created"); // publishing the message * Log.Information("Message {MessageType} with Id {MessageId} has been published successfully", e.MessageType, e.MessageId); * } * catch (Exception ex) * { * Log.Error(ex, "Error while publishing {MessageType} message with id {MessageId}.", e.MessageType, e.MessageId); * } * */ } catch (Exception ex) { Log.Error(ex, "Error while addinng owner {Owner} to {Property}.", @event.FirstName + " " + @event.LastName, rentalProperty.PropertyName); throw ex; } } //throw new NotImplementedException(); }
public async Task <AddOwnerToExistingPropertyCommandResult> Handle(AddOwnerToExistingPropertyCommand request, CancellationToken cancellationToken) { var property = _context.Property.FirstOrDefault(p => p.Id == request.PropertyId); PropertyOwner owner = null; var addedOwner = new AddOwnerToExistingPropertyCommandResult(); // Check if the email already exist if adding new owner instead of existing owner // //var user = _context.PropertyOwner.FirstOrDefault(e => e.ContactEmail == request.ContactEmail); //if (user != null) //{ // return new AddOwnerToExistingPropertyCommandResult() { Notes = "The email already exists!"}; //} // populate the addedOnwer addedOwner.UserAvartaImgUrl = request.UserAvartaImgUrl; addedOwner.FirstName = request.FirstName; addedOwner.LastName = request.LastName; addedOwner.UserName = request.UserName; addedOwner.ContactEmail = request.ContactEmail; addedOwner.ContactTelephone1 = request.ContactTelephone1; addedOwner.ContactTelephone2 = request.ContactTelephone2; addedOwner.OnlineAccessEnbaled = request.OnlineAccessEnbaled; addedOwner.IsActive = request.IsActive; addedOwner.RoleId = request.RoleId; addedOwner.Notes = request.Notes; addedOwner.StreetNumber = request.StreetNumber; addedOwner.City = request.City; addedOwner.StateProv = request.StateProv; addedOwner.ZipPostCode = request.ZipPostCode; addedOwner.Country = request.Country; addedOwner.Created = DateTime.Now.ToString("MMMM dd, yyyy"); addedOwner.Updated = DateTime.Now.ToString("MMMM dd, yyyy"); if (request.PropertyOwnerId == 0) { // Check if the email already exist if adding new owner instead of existing owner // var user = _context.PropertyOwner.FirstOrDefault(e => e.ContactEmail == request.ContactEmail); if (user != null) { return(new AddOwnerToExistingPropertyCommandResult() { Notes = "The email already exists!" }); } var ownerAddress = new OwnerAddress(request.StreetNumber, request.City, request.StateProv, request.Country, request.ZipPostCode); owner = property.AddNewOwnerToProperty(request.PropertyId, request.UserName, request.FirstName, request.LastName, request.ContactEmail, request.ContactTelephone1, request.ContactTelephone2, false, request.UserAvartaImgUrl, request.IsActive, 2, request.Notes, ownerAddress); _context.Add(owner); } else { owner = _context.PropertyOwner.Include(a => a.Address).FirstOrDefault(o => o.Id == request.PropertyOwnerId); var ownerProperty = property.AddExistingOwnerToProperty(owner, request.PropertyId); _context.Add(ownerProperty); } try { await _context.SaveChangesAsync(); addedOwner.Id = owner.Id; // logging Log.Information("The new owner {OwnerName} has been added to the property {PorpertyName} successfully", request.FirstName + " " + request.LastName, property.PropertyName); // Send messages if necessary // Publish message to MQ for other service to consume AddOwnerEvent e = new AddOwnerEvent(new Guid(), owner.Id, request.PropertyId, owner.UserName, owner.FirstName, owner.LastName, owner.ContactEmail, owner.ContactTelephone1, owner.ContactTelephone2, owner.OnlineAccess, owner.UserAvartaImgUrl, owner.IsActive, owner.RoleId, owner.Notes, owner.Address.StreetNumber, owner.Address.City, owner.Address.StateProvince, owner.Address.ZipPostCode, owner.Address.Country); try { await _messagePublisher.PublishMessageAsync(e.MessageType, e, "asset_created"); // publishing the message Log.Information("Message {MessageType} with Id {MessageId} has been published successfully", e.MessageType, e.MessageId); } catch (Exception ex) { Log.Error(ex, "Error while publishing {MessageType} message with id {MessageId}.", e.MessageType, e.MessageId); } } catch (Exception ex) { //throw ex; Log.Error(ex, "Error occured while adding the new owner {OwnerName} to the property {PropertyName}.", request.FirstName + " " + request.LastName, property.PropertyName); } return(addedOwner); }