public IHttpActionResult Open(OpeningDto openingDto)
        {
            var userId = User.Identity.GetUserId();

            if (context.Openings.Any(o => o.RestaurantId == openingDto.RestaurantId && o.DateTimeClose == null))
            {
                Close(openingDto);
            }

            else
            {
                var opening = new Opening
                {
                    UserId       = userId,
                    RestaurantId = openingDto.RestaurantId,
                    Restaurant   = context.Restaurants.FirstOrDefault(r => r.ID == openingDto.RestaurantId),
                    DateTimeOpen = DateTime.Now
                };

                context.Openings.Add(opening);

                context.Restaurants.FirstOrDefault(r => r.ID == openingDto.RestaurantId).Open();

                context.SaveChanges();
            }

            return(Ok());
        }
        private IHttpActionResult Close(OpeningDto openingDto)
        {
            context.Openings.FirstOrDefault(o => o.RestaurantId == openingDto.RestaurantId && o.DateTimeClose == null)
            .SetDateTimeClose(DateTime.Now, User.Identity.GetUserId());

            context.Restaurants.FirstOrDefault(r => r.ID == openingDto.RestaurantId).Close();

            try
            {
                context.SaveChanges();
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
            {
                Exception raise = dbEx;
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        string message = string.Format("{0}:{1}",
                                                       validationErrors.Entry.Entity.ToString(),
                                                       validationError.ErrorMessage);
                        // raise a new exception nesting
                        // the current instance as InnerException
                        raise = new InvalidOperationException(message, raise);
                    }
                }
                throw raise;
            }



            return(Ok());
        }
        public async Task <IActionResult> CreateOpening([FromBody] OpeningDto openingDto)
        {
            var result = await _mediator.Send(new CreateOpeningCommand(openingDto));

            return(CreateResponseOnPost(result));
        }