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()); }
public OrderCanceledEvent(Guid orderId, Guid clientId, CoursesOrderDto items) { AggregateId = orderId; OrderId = orderId; ClientId = clientId; CoursesOrder = items; }
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()); }
public async Task <bool> DisenrollCourse(CoursesOrderDto courses) { foreach (var item in courses.Items) { await IncreaseVacancyInCourse(item.CourseId); } return(await _courseRepository.UnitOfWork.Commit()); }
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; }