public void AddRestaurantWaiter(RestaurantWaiterDTO restaurantWaiterDto, long restaurantAdminId) { ValidateRestaurantWaiter(restaurantWaiterDto, 0); var restaurant = _restaurantService.GetRestaurantByAdminId(restaurantAdminId); if (restaurant == null) { throw new NotFoundException(ErrorCodes.RestaurantNotFound); } //var consumedWaiters = restaurant.GlobalAdmin.Restaurants.Where(x => !x.IsDeleted).Select(x => x.WaitersLimit).Sum(); // var consumedWaiters = _packageService.Query(x => x.GlobalAdminId == restaurant.GlobalAdminId).Select(x => x.Waiters.Count(w=>!w.IsDeleted)).Sum(); //Package package; //var packages = _packageService.Query(x => x.AdminId == restaurant.GlobalAdminId).Include(x => x.Waiters).Select().ToList(); //package = packages.OrderBy(x => x.Start).FirstOrDefault(); //int count = 1; //while (true) //{ // if (package.MaxNumberOfWaiters > package.Waiters.Count(x => !x.IsDeleted)) // { // break; // } // //else // //{ // // consumedWaiters = consumedWaiters - package.MaxNumberOfWaiters; // //} // package = packages.OrderBy(x => x.Start).Skip(count).FirstOrDefault(); // count++; //} ///var packages = restaurant.GlobalAdmin.Packages; RestaurantWaiter restaurantWaiter = Mapper.Map <RestaurantWaiter>(restaurantWaiterDto); restaurantWaiter.RestaurantId = restaurant.RestaurantId; restaurantWaiter.Password = PasswordHelper.Encrypt(restaurantWaiterDto.Password); restaurantWaiter.Role = Enums.RoleType.Waiter; restaurantWaiter.IsActive = true; //restaurantWaiter.PackageId = package.PackageId; _restaurantWaiterService.Insert(restaurantWaiter); SaveChanges(); //UpdateSubscription(restaurant.GlobalAdminId, package.PackageGuid, package.Waiters.Count(x => !x.IsDeleted)); }