public async Task <UpdateResult> UpdateAsync(string number, OrderRecord orderIn) { if (!OrderExists(number)) { return(new UpdateResult() { NotFound = true, ErrorMessage = $"Product with code {orderIn.Number} doesn't exist." }); } var orderTransaction = await this.dbContext.Database.BeginTransactionAsync(); try { Order orderToDelete = await this.dbContext.Orders.FindAsync(orderIn.Number); this.dbContext.Remove(orderToDelete); await this.dbContext.SaveChangesAsync(); await this.dbContext.AddAsync(await orderIn.GetEntity(dbContext)); await this.dbContext.SaveChangesAsync(); await orderTransaction.CommitAsync(); } catch (DbUpdateConcurrencyException dce) { await orderTransaction.RollbackAsync(); return(new UpdateResult() { Success = false, ErrorMessage = dce.Message }); } catch (Exception ex) { await orderTransaction.RollbackAsync(); } return(new UpdateResult() { Success = true }); }
public async Task <CreateResult <OrderRecord> > CreateAsync(OrderRecord order) { if (OrderExists(order.Number)) { return(new CreateResult <OrderRecord>() { AlreadyExists = true, ErrorMessage = $"Order with number {order.Number} already exists." }); } Order newOrder = await order.GetEntity(this.dbContext); try { await this.dbContext.SaveChangesAsync(); } catch (DbUpdateException dbu) { if (OrderExists(order.Number)) { return(new CreateResult <OrderRecord>() { AlreadyExists = true }); } else { return(new CreateResult <OrderRecord>() { ErrorMessage = dbu.Message }); } } return(new CreateResult <OrderRecord>() { Success = true, NewRecord = newOrder.GetRecord(this.dbContext) }); }