Beispiel #1
0
        public async Task <Response> Handle(DeleteMovieRequest request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                AddNotification("Request", Resource.RequestNotbeNull);
                return(new Response(this));
            }

            var movie = _repositoryMovie.GetById(request.Id);

            if (movie == null)
            {
                AddNotification("Request", Resource.MovieNotFound);
                return(new Response(this));
            }

            if (_repositorySession.Exists(x => x.Movie == movie))
            {
                AddNotification("Request", Resource.MovieExistsInSession);
                return(new Response(this));
            }

            _repositoryMovie.Delete(movie);

            var result = new { Id = movie.Id };

            var response = new Response(this, result);

            DeleteMovieNotification removerMovieNotification = new DeleteMovieNotification(movie);
            await _mediator.Publish(removerMovieNotification);

            return(await Task.FromResult(response));
        }
        public async Task <Response> Handle(AddSessionRequest request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                AddNotification("Request", Resource.RequestNotbeNull);
                return(new Response(this));
            }

            if (string.IsNullOrEmpty(request.SessionEnd))
            {
                AddNotification("Request", Resource.SessionEndIsInvalid);
                return(new Response(this));
            }


            var time       = TimeSpan.Parse(request.SessionEnd);
            var sessionEnd = request.SessionStart;

            sessionEnd = sessionEnd.AddHours(time.Hours);
            sessionEnd = sessionEnd.AddMinutes(time.Minutes);

            Entities.Session session = new Entities.Session(request.SessionStart, sessionEnd, request.TicketValue, request.Animation, request.Audio, request.MovieId, request.RoomId);
            AddNotifications(session);

            if (IsInvalid())
            {
                return(new Response(this));
            }

            if (_repositorySession.Exists(x => x.RoomId == session.RoomId &&
                                          (
                                              (session.SessionStart >= x.SessionStart && session.SessionStart <= x.SessionEnd) ||
                                              (session.SessionEnd >= x.SessionStart && session.SessionEnd <= x.SessionEnd)
                                          )
                                          )
                )
            {
                AddNotification("Request", Resource.ExisteRoominAnotherSession);
                return(new Response(this));
            }

            session = _repositorySession.Add(session);
            AddSessionNotification addSessionNotification = new AddSessionNotification(session);
            var response = new Response(this, session);

            await _mediator.Publish(addSessionNotification);

            return(await Task.FromResult(response));
        }
        public async Task <Response> Handle(DeleteSessionRequest request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                AddNotification("Request", Resource.RequestNotbeNull);
                return(new Response(this));
            }

            Entities.Session session = _repositorySession.GetById(request.Id);

            if (session == null)
            {
                AddNotification("Request", Resource.SessionNotFound);
                return(new Response(this));
            }

            var dateNow = DateTime.Now;

            dateNow.AddDays(10);

            if (_repositorySession.Exists(x => x.Id == request.Id && x.SessionStart <= dateNow))
            {
                AddNotification("Request", Resource.SessionCanNotBeDeleteUnder10Days);
                return(new Response(this));
            }

            _repositorySession.Delete(session);

            var result = new { Id = session.Id };

            var response = new Response(this, result);

            DeleteSessionNotification removeSessionNotification = new DeleteSessionNotification(session);
            await _mediator.Publish(removeSessionNotification);

            return(await Task.FromResult(response));
        }