public async Task <ActionResult <CreateApartamentOutputModel> > Create(ApartamentInputModel input) { var dealer = await this.dealers.FindByUser(this.currentUser.UserId); var category = await this.categories.Find(input.Category); if (category == null) { return(BadRequest(Result.Failure("Category does not exist."))); } var apartament = new Apartament { Dealer = dealer, Information = input.Information, Category = category, ImageUrl = input.ImageUrl, PricePerDay = input.PricePerDay, Options = new Options { HasClimateControl = input.HasClimateControl, NumberOfBeds = input.NumberOfBeds, Floor = input.Floor } }; var messageData = new ApartamentCreatedMessage() { ApartamentId = apartament.Id, Information = apartament.Information }; var message = new Message(messageData); await this.apartaments.Save(apartament, message); await this.massTransitBus.Publish(messageData); await this.apartaments.MarkMessageAsPublished(message.Id); return(new CreateApartamentOutputModel(apartament.Id)); }
public async Task <ActionResult> Edit(int id, ApartamentInputModel input) { var dealerId = await this.dealers.GetIdByUser(this.currentUser.UserId); var dealerHasApartament = await this.dealers.HasApartament(dealerId, id); if (!dealerHasApartament) { return(BadRequest(Result.Failure("You cannot edit this apartament."))); } var category = await this.categories.Find(input.Category); var apartament = await this.apartaments.Find(id); apartament.Information = input.Information; apartament.Category = category; apartament.ImageUrl = input.ImageUrl; apartament.PricePerDay = input.PricePerDay; apartament.Options = new Options { HasClimateControl = input.HasClimateControl, NumberOfBeds = input.NumberOfBeds, Floor = input.Floor }; await this.apartaments.Save(apartament); await this.massTransitBus.Publish(new ApartamentUpdatedMessage() { ApartamentId = apartament.Id, Information = apartament.Information }); return(Result.Success); }