Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }