Exemple #1
0
        public Task <PhoneQueryResponse> HandleAsync(PhoneQuery query)
        {
            PhoneDto mappedPhone;

            try
            {
                var phone = phoneRepository.Get(query.Id);

                if (phone == null)
                {
                    throw new PhoneNotFound("Phone with requested id not found");
                }

                mappedPhone = mapper.Map <PhoneDto>(phone);
            }

            catch (PhoneNotFound)
            {
                throw;
            }

            catch (Exception ex)
            {
                throw new BaseApiException(System.Net.HttpStatusCode.InternalServerError, ex.ToString());
            }

            return(Task.FromResult(new PhoneQueryResponse()
            {
                Phone = mappedPhone,
                Links = mediaTypeCheckService.CanCreateHATEOASLink() ? hateoasLinksService.CreateLinksForPhones(mappedPhone.Id) : null
            }));
        }
 private Task <PhonesQueryResponse> CreateResponse(List <Phone> phones)
 {
     return(Task.FromResult(new PhonesQueryResponse()
     {
         Phones = MapAuthorToAuthorDto(phones),
         Links = mediaTypeCheckService.CanCreateHATEOASLink() ? hateoasLinksService.CreateLinksForPhones(Guid.Empty) : null
     }));
 }
        public Task <CreatePhoneCommandResponse> HandleAsync(CreatePhoneCommand command)
        {
            try
            {
                Guid phoneId = Guid.NewGuid();

                var mappedPhone = mapper.Map <Phone>(command);

                mappedPhone.Id        = phoneId;
                mappedPhone.AddedDate = DateTime.Now;

                mappedPhone.Dimensions.Id = Guid.NewGuid();
                mappedPhone.Display.Id    = Guid.NewGuid();
                mappedPhone.Media.ForEach(media => media.Id = Guid.NewGuid());

                phoneRepository.Insert(mappedPhone);

                eventBus.Publish(new PhoneCreatedEvent(
                                     command.Name,
                                     command.Manufacturer,
                                     command.Dimensions,
                                     command.Weight,
                                     command.Display,
                                     command.CPUModel,
                                     command.RAM,
                                     command.OS,
                                     command.Price,
                                     command.Media));

                phoneRepository.CommitTransaction();

                return(Task.FromResult(new CreatePhoneCommandResponse()
                {
                    Id = phoneId,
                    Links = mediaTypeCheckService.CanCreateHATEOASLink() ? hateoasLinksService.CreateLinksForPhones(phoneId) : null
                }));
            }

            catch (Exception ex)
            {
                phoneRepository.RollbackTransaction();
                throw new BaseApiException(System.Net.HttpStatusCode.InternalServerError, ex.ToString());
            }
        }