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 }); }
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); } } }
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); })); }