public Task <IActionResult> CreateDeal([FromForm] CreateDealRequest request)
        {
            var command = new CreateDealCommand(request.Name, request.ImageUrl, request.Description,
                                                request.DescriptionEng, request.MinimumQuantity, request.MinimumBillAmount,
                                                request.IsFixedPriceDiscount, request.DiscountAmount, request.DiscountPercentage,
                                                request.MaximumDiscount, request.StartDate, request.EndDate, request.PackSize, request.FreeItemCount,
                                                request.IsPackageDeal);

            return(HandleActionResultFor(command));
        }
Esempio n. 2
0
        public async Task <IHttpActionResult> CreateDeal(CreateDealCommand command)
        {
            //De-serialize - already done
            //Validate schema with DataAnnotations/XSD/JSONSchema
            //Apply command to domain
            //return response code;

            var streamName = StreamNames.DealStreamName(command.DealId);
            var eventId    = Guid.NewGuid(); //Is this correct? Or should it be cmd.DealId? Or something else?
            var payload    = JsonConvert.SerializeObject(command);
            await _eventStoreClient.SaveEvent(streamName, ExpectedVersion.NoStream, eventId, "DealCreated", payload);

            return(Ok());
        }
        public async Task <ActionResult <DealDto> > Post([FromBody] CreateDealCommand model, CancellationToken cancellationToken)
        {
            try
            {
                var result = await Mediator.Send <DealDto>(model, cancellationToken);

                // await Mediator.Publish<DealCreatedEvent>(new DealCreatedEvent());
                //await DomainEvents.Raise(new DealCreatedEvent());
                return(CreatedAtAction(nameof(Get), new { id = result.Id }, result));
            }
            catch (Exception exception)
            {
                return(await Task.FromResult(StatusCode(StatusCodes.Status500InternalServerError, exception)));
            }
        }
Esempio n. 4
0
        public IObservable <Unit> CreateDeal(CreateDealCommand command)
        {
            return(Observable.Create <Unit>(
                       obs =>
            {
                var subscription = GetDealUpdates(command.DealId)
                                   .Select(_ => Unit.Default)
                                   .Take(1)
                                   .Timeout(TimeSpan.FromSeconds(5), Scheduler.Default)
                                   .Subscribe(obs);

                //Send the command
                _messageBusClient.Enqueue(command);

                return subscription;
            }));
        }
Esempio n. 5
0
 public IEnumerable Handle(CreateDealCommand command)
 {
     yield return(new DealCreatedEvent {
         Id = command.Id
     });
 }
Esempio n. 6
0
 public async Task <ActionResult <bool> > Create(CreateDealCommand command) => await
 this.Send(command);