public async Task <Customer> CreateAsync(Customer customer) { var customerRecord = _mapper.Map <DataProvider.Models.Customer>(customer); customerRecord.Number = await _sequenceDataProvider.GetNextCustomerNumberAsync(); customerRecord.Created = DateTimeOffset.UtcNow.UtcDateTime; customerRecord.SearchName = DataProvider.Models.CustomerRecord.CalculateSearchName(customer.Name); // customer name is already uppercased by the frontend await HydratePostalCodeAsync(customer, customerRecord); if (customer.Memo != null) { var memo = new DataProvider.Models.Memo() { Text = customer.Memo }; customerRecord.Memo = memo; _context.Memos.Add(memo); } _context.Customers.Add(customerRecord); await _context.SaveChangesAsync(); return(_mapper.Map <Customer>(customerRecord)); }
public async Task <Customer> UpdateAsync(Customer customer) { var customerRecord = await FindByNumberAsync(customer.Id); var memoRecord = customerRecord.Memo; _mapper.Map(customer, customerRecord); customerRecord.SearchName = DataProvider.Models.CustomerRecord.CalculateSearchName(customer.Name); // customer name is already uppercased by the frontend await HydratePostalCodeAsync(customer, customerRecord); ReplaceEmptyStringWithNull(customer, customerRecord); if (customer.Memo != null) { if (memoRecord != null) // update existing memo { memoRecord.Text = customer.Memo; } else // create new memo { var memo = new DataProvider.Models.Memo() { Text = customer.Memo }; customerRecord.Memo = memo; _context.Memos.Add(memo); } } else if (memoRecord != null) // delete old memo { _context.Memos.Remove(memoRecord); } _context.Customers.Update(customerRecord); await _context.SaveChangesAsync(); return(_mapper.Map <Customer>(customerRecord)); }