public HttpResponseMessage PostFinanceTransactionSet(FinanceTransactionSet financeTransactionSet) { // POST only works on new items. // financeTransactionSet.FinanceTransactionList = financeTransactionSet.FinanceTransactionList .Where(x => x.Id <= 0 && !x.IsMarkedForDeletion) .ToList(); financeTransactionSet.FinanceTransactionList.ForEach(x => x.Id = 0); financeTransactionSet = this.financeTransactionService.UpdateFinanceTransactionSet( this.UserName, financeTransactionSet); var response = this.Request.CreateResponse(HttpStatusCode.Created, financeTransactionSet); response.Headers.Location = new Uri(this.Url.Link("GetFinanceTransactionSet", new { workbookId = financeTransactionSet.WorkbookId, transactionDateFrom = financeTransactionSet.TransactionFromDate, transactionDateTo = financeTransactionSet.TransactionToDate })); return(response); }
public void PutFinanceTransactionSet(FinanceTransactionSet financeTransactionSet) { // PUT ignores new items. // financeTransactionSet.FinanceTransactionList = financeTransactionSet.FinanceTransactionList.Where(x => x.Id > 0).ToList(); this.financeTransactionService.UpdateFinanceTransactionSet( this.UserName, financeTransactionSet); }
public FinanceTransactionSet UpdateFinanceTransactionSet( string userName, FinanceTransactionSet financeTransactionSet) { this.logger.Verbose(string.Format("Updating transactions for workbook {0} for user {1}...", financeTransactionSet.WorkbookId, userName)); this.authorizationService.Authorize(userName, financeTransactionSet.WorkbookId); // We have to do 2 operations: delete the ones marked for deletion, and insert/update // the rest. var financeTransactionEntityListToSave = financeTransactionSet.FinanceTransactionList .Where(x => !x.IsMarkedForDeletion) .ToEntity(financeTransactionSet.WorkbookId); var financeTransactionEntityListToDelete = financeTransactionSet.FinanceTransactionList .Where(x => x.IsMarkedForDeletion && x.Id != 0) .ToEntity(financeTransactionSet.WorkbookId); try { this.Database .With(this.financeTransactionRepository) .Execute(unit => { financeTransactionEntityListToDelete.ForEach(this.financeTransactionRepository.Delete); financeTransactionEntityListToSave.ForEach(this.financeTransactionRepository.Save); }); } catch (Exception ex) { ex.WrapLogAndThrow <ServiceException, ServiceErrorCodes>( ServiceErrorCodes.UpdateFinanceTransactionSetError); } financeTransactionSet.FinanceTransactionList = financeTransactionEntityListToSave.ToDc(); return(financeTransactionSet); }