Esempio n. 1
0
        public async Task <bool> Handle(CancelOrderAndDisrollFromCourseCommand message, CancellationToken cancellationToken)
        {
            if (!IsValid(message))
            {
                return(false);
            }

            var order = await _orderRepository.GetById(message.OrderId);

            if (order == null)
            {
                await _mediatorHandler.PublishNotification(new DomainNotification(message.MessageType, "Pedido não encontrado!"));

                return(false);
            }

            var listOfItemDto = new List <ItemDto>();

            order.OrderItems.ForEach(p => listOfItemDto.Add(new ItemDto {
                CourseId = p.CourseId
            }));
            var coursesOrder = new CoursesOrderDto {
                OrderId = order.Id, Items = listOfItemDto
            };

            order.AddEvent(new OrderCanceledEvent(message.OrderId, message.ClientId, coursesOrder));
            order.MakeDraft();

            return(await _orderRepository.UnitOfWork.Commit());
        }
Esempio n. 2
0
 public OrderCanceledEvent(Guid orderId, Guid clientId, CoursesOrderDto items)
 {
     AggregateId  = orderId;
     OrderId      = orderId;
     ClientId     = clientId;
     CoursesOrder = items;
 }
Esempio n. 3
0
        public async Task <bool> Handle(StartOrderCommand message, CancellationToken cancellationToken)
        {
            if (!IsValid(message))
            {
                return(false);
            }

            var order = await _orderRepository.GetDraftOrderByClientId(message.ClientId);

            if (order == null)
            {
                await _mediatorHandler.PublishNotification(new DomainNotification(message.MessageType, "Pedido não encontrado!"));

                return(false);
            }

            order.StartOrder();

            var listOfItemDto = new List <ItemDto>();

            order.OrderItems.ForEach(p => listOfItemDto.Add(new ItemDto {
                CourseId = p.CourseId
            }));
            var coursesOrder = new CoursesOrderDto {
                OrderId = order.Id, Items = listOfItemDto
            };

            order.AddEvent(new OrderStartedEvent(order.Id, order.ClientId, order.TotalValue, coursesOrder, message.NameCard, message.NumberCard, message.ExpirationDateCard, message.CvvCard));

            _orderRepository.Update(order);

            return(await _orderRepository.UnitOfWork.Commit());
        }
Esempio n. 4
0
        public async Task <bool> DisenrollCourse(CoursesOrderDto courses)
        {
            foreach (var item in courses.Items)
            {
                await IncreaseVacancyInCourse(item.CourseId);
            }

            return(await _courseRepository.UnitOfWork.Commit());
        }
Esempio n. 5
0
 public OrderStartedEvent(Guid orderId, Guid clientId, decimal total, CoursesOrderDto items, string nameCard, string numberCard, string expirationDateCard, string cvvCard)
 {
     AggregateId        = orderId;
     OrderId            = orderId;
     ClientId           = clientId;
     Total              = total;
     CoursesOrder       = items;
     NameCard           = nameCard;
     NumberCard         = numberCard;
     ExpirationDateCard = expirationDateCard;
     CvvCard            = cvvCard;
 }