public async Task <ActionResult> Create(CreateDailyMenuInputModel input) { var userId = this.currentUserService.UserId; var isUserExists = await this.usersService.IsUserExists(userId); if (!isUserExists) { return(BadRequest(string.Format(UsersConstants.UserNotExists, userId))); } var isDailyMenuByDateExists = await this.dailyMenusService .CheckIfDailyMenuExistsByDate(userId, input.Date ?? DateTime.UtcNow); if (isDailyMenuByDateExists) { return(BadRequest(string.Format(FoodsConstants.DailyMenuExistsByDate, userId, input.Date?.ToString("MM/dd/yyyy")))); } var result = await this.dailyMenusService.CreateDailyMenu(userId, input); return(CreatedAtRoute("GetDailyMenuByUserAndDate", new { date = input.Date }, result)); }
public async Task <DailyMenuDto> CreateDailyMenu(string userId, CreateDailyMenuInputModel input) { if (string.IsNullOrWhiteSpace(userId)) { throw new InvalidOperationException(UsersConstants.UserNullOrWhiteSpace); } var dailyMenuForDb = input .MapTo <DailyMenu>(); dailyMenuForDb.UserId = userId; var messageData = new DailyMenuCreatedMessage { UserId = dailyMenuForDb.UserId }; var message = new Message(messageData); await this.Save(dailyMenuForDb, message); await this.publisher.Publish(messageData); await this.MarkMessageAsPublished(message.Id); var dailyMenuFromDb = await this.context .DailyMenus .Include(x => x.DailyMenuFoods) .ThenInclude(x => x.Food) .ThenInclude(x => x.FoodCategory) .FirstOrDefaultAsync(x => x.Id == dailyMenuForDb.Id); var dailyMenuToReturn = dailyMenuFromDb .MapTo <DailyMenuDto>(); return(dailyMenuToReturn); }