Example #1
0
        public async Task <bool> Add(ClientServiceAggregate aggregate)
        {
            if (aggregate == null)
            {
                throw new ArgumentNullException(nameof(aggregate));
            }

            using (var transaction = await _context.Database.BeginTransactionAsync().ConfigureAwait(false))
            {
                try
                {
                    var record = aggregate.ToModel();
                    _context.ClientServices.Add(record);
                    await _context.SaveChangesAsync().ConfigureAwait(false);

                    transaction.Commit();
                    return(true);
                }
                catch
                {
                    transaction.Rollback();
                    return(false);
                }
            }
        }
        public async Task Handle(AddClientServiceCommand message)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            var record = new ClientServiceAggregate
            {
                CategoryId     = message.CategoryId,
                CreateDateTime = message.CreateDateTime,
                Description    = message.Description,
                GooglePlaceId  = message.GooglePlaceId,
                Id             = message.Id,
                Latitude       = message.Latitude,
                Longitude      = message.Longitude,
                Name           = message.Name,
                Price          = message.Price,
                Subject        = message.Subject,
                StreetAddress  = message.StreetAddress,
                UpdateDateTime = message.UpdateDateTime
            };

            if (!await _repository.Add(record))
            {
                return;
            }

            _eventPublisher.Publish(new ClientServiceAddedEvent
            {
                CategoryId     = message.CategoryId,
                CreateDateTime = message.CreateDateTime,
                Description    = message.Description,
                GooglePlaceId  = message.GooglePlaceId,
                Id             = message.Id,
                Latitude       = message.Latitude,
                Longitude      = message.Longitude,
                Name           = message.Name,
                Price          = message.Price,
                Subject        = message.Subject,
                UpdateDateTime = message.UpdateDateTime,
                CommonId       = message.CommonId
            });
        }
Example #3
0
        public async Task <bool> Update(ClientServiceAggregate aggregate)
        {
            if (aggregate == null)
            {
                throw new ArgumentNullException(nameof(aggregate));
            }

            using (var transaction = await _context.Database.BeginTransactionAsync().ConfigureAwait(false))
            {
                try
                {
                    var record = await _context.ClientServices.FirstOrDefaultAsync(a => a.Id == aggregate.Id);

                    if (record == null)
                    {
                        transaction.Rollback();
                        return(false);
                    }

                    record.CategoryId     = aggregate.CategoryId;
                    record.Description    = aggregate.Description;
                    record.Latitude       = aggregate.Latitude;
                    record.Longitude      = aggregate.Longitude;
                    record.Name           = aggregate.Name;
                    record.Description    = aggregate.Description;
                    record.Price          = aggregate.Price;
                    record.Subject        = aggregate.Subject;
                    record.UpdateDateTime = aggregate.UpdateDateTime;
                    await _context.SaveChangesAsync().ConfigureAwait(false);

                    transaction.Commit();
                    return(true);
                }
                catch
                {
                    transaction.Rollback();
                    return(false);
                }
            }
        }
Example #4
0
        public static ClientService ToModel(this ClientServiceAggregate announcement)
        {
            if (announcement == null)
            {
                throw new ArgumentNullException(nameof(announcement));
            }

            return(new ClientService
            {
                Id = announcement.Id,
                CategoryId = announcement.CategoryId,
                CreateDateTime = announcement.CreateDateTime,
                Description = announcement.Description,
                Name = announcement.Name,
                Subject = announcement.Subject,
                UpdateDateTime = announcement.UpdateDateTime,
                Latitude = announcement.Latitude,
                Longitude = announcement.Longitude,
                Price = announcement.Price,
                GooglePlaceId = announcement.GooglePlaceId,
                StreetAddress = announcement.StreetAddress
            });
        }
        public void Enrich(IHalResponseBuilder halResponseBuilder, ClientServiceAggregate announcement)
        {
            if (halResponseBuilder == null)
            {
                throw new ArgumentNullException(nameof(halResponseBuilder));
            }

            if (announcement == null)
            {
                throw new ArgumentNullException(nameof(announcement));
            }

            halResponseBuilder.AddEmbedded(e => e.AddObject(_responseBuilder.GetClientService(announcement),
                                                            (l) =>
            {
                if (announcement.Category == null)
                {
                    return;
                }

                l.AddOtherItem("category", new Dtos.Link("/" + Constants.RouteNames.ShopCategories + "/" + announcement.CategoryId)).AddSelf(Constants.RouteNames.ClientServices + "/" + announcement.Id);
            }));
        }