public async Task <IActionResult> Delete([FromBody] ExcursionGroup excursionGroupId)
 {
     try
     {
         var excursionGroup = _context.ExcursionGroups.FirstOrDefault(x => x.Id == excursionGroupId.Id);
         if (excursionGroup != null)
         {
             _logger.LogInformation("Try to delete excursionGroup: {0}", excursionGroup.Id);
             _context.ExcursionGroups.Remove(excursionGroup);
         }
         await _context.SaveChangesAsync();
     }
     catch (Exception e)
     {
         _logger.LogError(e.ToString());
         return(BadRequest(e.Message));
     }
     _logger.LogInformation("ExcursionGroup was deleted by user: {0}", User.Identity.Name);
     return(Ok("Excursion group was deleted successfully"));
 }
        public async Task <IActionResult> Update([FromBody] ExcursionGroup excursionGroupid)
        {
            try
            {
                var excursionGroup = _context.ExcursionGroups.FirstOrDefault(x => x.Id == excursionGroupid.Id);
                if (excursionGroup != null)
                {
                    var currentCapacity = _context.GetExcursionGroupsCapacity(excursionGroup.ExcursionId);
                    //TODO: this shit dont work- excursion.Tour.Capacity
                    var a = _context.Tours.FirstOrDefault(x => x.Id == _context.Excursions.FirstOrDefault(e => e.Id == excursionGroup.ExcursionId).Id);
                    if (a != null && a.Capacity >= (currentCapacity + excursionGroup.GetCapacity(_context)))
                    {
                        _context.ExcursionGroups.Update(excursionGroup);
                        _logger.LogInformation("Try to update excursionGroup");

                        await _context.SaveChangesAsync();
                    }
                    else
                    {
                        _logger.LogWarning("Not enough excursion space. Current workload is: {0} / {1}",
                                           currentCapacity, a.Capacity);
                        return(BadRequest("Not enough excursion space"));
                    }

                    _logger.LogWarning("Try to update excursion group {0}", excursionGroup.Id);
                    _context.ExcursionGroups.Update(excursionGroup);
                }

                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                _logger.LogError(e.ToString());
                return(BadRequest(e.Message));
            }

            _logger.LogWarning("ExcursionGroup was updated by user {0}", User.Identity.Name);
            return(Ok("Excursion group was updated successfully"));
        }
        public async Task <IActionResult> Add([FromBody] ExcursionGroup excursionGroup)
        {
            try
            {
                var excursion = _context.Excursions.FirstOrDefault(x => x.Id == excursionGroup.ExcursionId);
                if (excursion != null && excursion.Status)
                {
                    var currentCapacity = _context.GetExcursionGroupsCapacity(excursionGroup.ExcursionId);
                    //TODO: this shit dont work- excursion.Tour.Capacity
                    var a = _context.Tours.FirstOrDefault(x => x.Id == excursion.TourId);

                    if (a != null && a.Capacity >= (currentCapacity + excursionGroup.GetCapacity(_context)))
                    {
                        _context.ExcursionGroups.Add(excursionGroup);
                        _logger.LogInformation("Try to add new excursionGroup");

                        await _context.SaveChangesAsync();
                    }
                    else
                    {
                        _logger.LogWarning("Not enough excursion space. Current workload is: {0} / {1}",
                                           currentCapacity, a.Capacity);
                        return(BadRequest("Not enough excursion space"));
                    }
                }
                else
                {
                    _logger.LogError("Incorrect data for excursion groups from user: {0}", User.Identity.Name);
                    return(BadRequest("Incorrect data"));
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e.ToString());
                return(BadRequest(e.Message));
            }
            _logger.LogInformation("ExcursionGroup was added by user: {0}", User.Identity.Name);
            return(Ok("Excursion group was added to excursion successfully"));
        }