/// <summary>
        ///     Builds and sends a request to add a expenditure to the database.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="username">The username.</param>
        /// <returns>
        ///     The response object.
        /// </returns>
        public async Task <OrchestratorResponseWrapper <ExpenditureViewModel> > AddExpenditure(
            ExpenditureViewModel model,
            string username)
        {
            var response = new OrchestratorResponseWrapper <ExpenditureViewModel>();

            try
            {
                var request     = assembler.NewAddExpenditureRequest(model, username);
                var apiResponse = await dataAccess.AddExpenditure(request);

                if (!apiResponse.Success)
                {
                    response.AddErrors(apiResponse.Errors);

                    return(response);
                }

                response.AddWarnings(apiResponse.Warnings);

                response.Model = assembler.NewExpenditureViewModel(apiResponse);
            }
            catch (Exception ex)
            {
                var err = ErrorHelper.Create(ex, username, GetType(), "AddExpenditure");
                response.AddError(err);
            }

            return(response);
        }
        //
        // GET: /Expenditure/Edit/5
        public ActionResult Edit(int id)
        {
            Expenditure expenditure = ctx.Expenditures.Where(x => x.IdExpenditure == id).First();

            string currUserId = User.Identity.GetUserId();

            //redirects user to the 403 page if he is trying to change data that is not his own
            if (expenditure.ApplicationUserId != currUserId)
            {
                throw new HttpException(403, "Forbidden");
            }

            ExpenditureViewModel expenditureView = new ExpenditureViewModel()
            {
                Id = expenditure.IdExpenditure,
                JournalEntryNum       = expenditure.JournalEntryNum,
                Date                  = expenditure.DateExpenditure.ToShortDateString(),
                AmountCash            = expenditure.AmountCash.ToString(),
                AmountNonCashBenefit  = expenditure.AmountNonCashBenefit.ToString(),
                AmountTransferAccount = expenditure.AmountTransferAccount.ToString(),
                Article22             = expenditure.Article22.ToString(),
                ValueAddedTax         = expenditure.ValueAddedTax.ToString(),
                Totaled               = expenditure.Totaled
            };

            return(View(expenditureView));
        }
        public async Task <ActionResult> Delete(ExpenditureViewModel model)
        {
            var result = await _expenditures.Delete(model.Id);

            if (result.Succeeded)
            {
                return(RedirectToAction("Index"));
            }
            return(RedirectToAction("Delete", new { message = result.Message }));
        }
 public void TearDown()
 {
     assembler                    = null;
     validUsername                = null;
     validExpenditureViewModel    = null;
     validAddExpenditureResponse  = null;
     validGetExpenditureResponse  = null;
     validEditExpenditureResponse = null;
     validExpenditureProxy        = null;
     validExpenditureId           = Guid.Empty;
 }
Example #5
0
 public JavaScriptResult Create(ExpenditureViewModel expenditurevm)
 {
     try
     {
         _expenditureService.Add(Mapper.Map <Expenditure>(expenditurevm));
         return(JavaScript($"ShowResult('{"Data saved successfully."}','{"success"}','{"redirect"}','{"/APanel/Expenditure/?companyId=" + expenditurevm.CompanyId + "&&branchId=" + expenditurevm.BranchId}')"));
     }
     catch (Exception ex)
     {
         return(JavaScript($"ShowResult('{ex.Message}','failure')"));
     }
 }
        public async Task <ActionResult> Edit(ExpenditureViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(InvalidModelState(ModelState));
            }

            model.UserId = UserId;

            var response = await orchestrator.EditExpenditure(model, UserEmail);

            return(JsonResponse(response));
        }
 /// <summary>
 ///     Converts an instance of the <see cref="ExpenditureViewModel" /> class to a <see cref="ExpenditureProxy" /> class.
 /// </summary>
 /// <param name="model">The model.</param>
 /// <returns>The proxy.</returns>
 private static ExpenditureProxy ExpenditureViewModelToProxy(ExpenditureViewModel model)
 {
     return(new ExpenditureProxy
     {
         Amount = model.Amount,
         Category = new CategoryProxy {
             Name = model.Category
         },
         Description = model.Description,
         DateOccurred = model.DateOccurred,
         UserId = model.UserId,
         Id = model.Id
     });
 }
        public async Task <ActionResult> Details(int id)
        {
            var item = await _expenditures.GetExpenditure(id);

            var expenditure = new ExpenditureViewModel
            {
                Id           = item.Id,
                ExpenseTime  = item.ExpenseTime.ToShortDateString(),
                Comment      = item.Comment,
                Cost         = item.Cost,
                CategoryName = item.CategoryName
            };

            return(View(expenditure));
        }
        /// <summary>
        ///     Creates an instance of the <see cref="AddExpenditureRequest" />. class.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <param name="username">The username.</param>
        /// <returns>
        ///     The request object.
        /// </returns>
        public AddExpenditureRequest NewAddExpenditureRequest(ExpenditureViewModel model, string username)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (string.IsNullOrEmpty(username))
            {
                throw new ArgumentNullException(nameof(username));
            }

            return(new AddExpenditureRequest {
                Expenditure = ExpenditureViewModelToProxy(model), Username = username
            });
        }
        public ActionResult Edit(int id, ExpenditureViewModel expenditureView)
        {
            string currUserId = User.Identity.GetUserId();

            //redirects user to the 403 page if he is trying to change data that is not his own
            if (ctx.Expenditures.Where(x => x.IdExpenditure == id).First().ApplicationUserId != currUserId)
            {
                throw new HttpException(403, "Forbidden");
            }

            try
            {
                // TODO: Add update logic here


                decimal amountCash            = Convert.ToDecimal(expenditureView.AmountCash);
                decimal amountNonCashBenefit  = Convert.ToDecimal(expenditureView.AmountNonCashBenefit);
                decimal amountTransferAccount = Convert.ToDecimal(expenditureView.AmountTransferAccount);
                decimal article22             = Convert.ToDecimal(expenditureView.Article22);
                decimal valueAddedTax         = Convert.ToDecimal(expenditureView.ValueAddedTax);


                decimal totaled = amountCash + amountNonCashBenefit + amountTransferAccount - article22 - valueAddedTax;

                DateTime date = Convert.ToDateTime(expenditureView.Date);

                ctx.Expenditures.Where(x => x.IdExpenditure == id).First().JournalEntryNum       = expenditureView.JournalEntryNum;
                ctx.Expenditures.Where(x => x.IdExpenditure == id).First().DateExpenditure       = date;
                ctx.Expenditures.Where(x => x.IdExpenditure == id).First().ApplicationUserId     = currUserId;
                ctx.Expenditures.Where(x => x.IdExpenditure == id).First().AmountCash            = amountCash;
                ctx.Expenditures.Where(x => x.IdExpenditure == id).First().AmountNonCashBenefit  = amountNonCashBenefit;
                ctx.Expenditures.Where(x => x.IdExpenditure == id).First().AmountTransferAccount = amountTransferAccount;
                ctx.Expenditures.Where(x => x.IdExpenditure == id).First().Article22             = article22;
                ctx.Expenditures.Where(x => x.IdExpenditure == id).First().ValueAddedTax         = valueAddedTax;
                ctx.Expenditures.Where(x => x.IdExpenditure == id).First().Totaled = totaled;

                ctx.SaveChanges();


                return(RedirectToAction("Index"));
            }
            catch
            {
                return(RedirectToAction("Error", "Shared"));
            }
        }
        public async Task <ActionResult> Delete(int id, string message)
        {
            var item = await _expenditures.GetExpenditure(id);

            var expenditure = new ExpenditureViewModel
            {
                Id           = item.Id,
                ExpenseTime  = item.ExpenseTime.ToShortDateString(),
                Comment      = item.Comment,
                Cost         = item.Cost,
                CategoryName = item.CategoryName
            };

            if (!string.IsNullOrWhiteSpace(message))
            {
                ViewBag.ErrorMessage = message;
            }
            return(View(expenditure));
        }
 public void TearDown()
 {
     orchestrator                     = null;
     assembler                        = null;
     dataAccess                       = null;
     validViewModel                   = null;
     validAddExpenditureRequest       = null;
     validAddExpenditureResponse      = null;
     invalidAddExpenditureRequest     = null;
     invalidAddExpenditureResponse    = null;
     validDeleteExpenditureRequest    = null;
     validDeleteExpenditureResponse   = null;
     invalidDeleteExpenditureRequest  = null;
     invalidDeleteExpenditureResponse = null;
     validGetExpenditureRequest       = null;
     validGetExpenditureResponse      = null;
     invalidGetExpenditureRequest     = null;
     invalidGetExpenditureResponse    = null;
     validExpenditureProxy            = null;
     invalidExpenditureViewModel      = null;
 }
        // GET: Expenditure
        public async Task <ActionResult> Index(DateTime?startDate, DateTime?endDate)
        {
            var userId = User.Identity.GetUserId();
            var items  = await _expenditures.GetExpenditures(startDate, endDate, userId);

            var expenditures = new List <ExpenditureViewModel>();

            foreach (var i in items)
            {
                var expenditure = new ExpenditureViewModel
                {
                    Id           = i.Id,
                    ExpenseTime  = i.ExpenseTime.ToShortDateString(),
                    Comment      = i.Comment,
                    Cost         = i.Cost,
                    CategoryName = i.CategoryName
                };
                expenditures.Add(expenditure);
            }
            return(View(expenditures));
        }
        public ActionResult Create(ExpenditureViewModel expenditureView)
        {
            try
            {
                // TODO: Add insert logic here
                string currUser = User.Identity.GetUserId();

                decimal amountCash            = Convert.ToDecimal(expenditureView.AmountCash);
                decimal amountNonCashBenefit  = Convert.ToDecimal(expenditureView.AmountNonCashBenefit);
                decimal amountTransferAccount = Convert.ToDecimal(expenditureView.AmountTransferAccount);
                decimal article22             = Convert.ToDecimal(expenditureView.Article22);
                decimal valueAddedTax         = Convert.ToDecimal(expenditureView.ValueAddedTax);


                decimal totaled = amountCash + amountNonCashBenefit + amountTransferAccount - article22 - valueAddedTax;

                DateTime date = Convert.ToDateTime(expenditureView.Date);

                ctx.Expenditures.Add(new Expenditure
                {
                    JournalEntryNum       = expenditureView.JournalEntryNum,
                    DateExpenditure       = date,
                    AmountCash            = amountCash,
                    AmountNonCashBenefit  = amountNonCashBenefit,
                    AmountTransferAccount = amountTransferAccount,
                    Article22             = article22,
                    ValueAddedTax         = valueAddedTax,
                    Totaled           = totaled,
                    ApplicationUserId = currUser
                });

                ctx.SaveChanges();

                return(RedirectToAction("Index"));
            }
            catch
            {
                return(RedirectToAction("Error", "Shared"));
            }
        }
        public void SetUp()
        {
            exportHelper = Substitute.For <IExportHelper>();

            exportHelper.ToCsv(new List <string>()).ReturnsForAnyArgs(string.Empty);
            exportHelper.ToJson(new List <string>()).ReturnsForAnyArgs(string.Empty);
            exportHelper.ToXml(new List <string>()).ReturnsForAnyArgs(string.Empty);

            assembler          = new ExpenditureAssembler(exportHelper);
            validUsername      = "******";
            validExpenditureId = Guid.NewGuid();
            validUserId        = Guid.NewGuid();

            validExpenditureProxy = new ExpenditureProxy
            {
                Amount   = 10,
                Category =
                    new CategoryProxy
                {
                    Id   = Guid.NewGuid(),
                    Name = "TEST"
                },
                CategoryId = Guid.NewGuid(),
                Id         = Guid.NewGuid(),
                UserId     = Guid.NewGuid()
            };

            validGetExpenditureResponse =
                new GetExpenditureResponse {
                Expenditure = validExpenditureProxy, RequestReference = Guid.NewGuid()
            };

            validExpenditureViewModel =
                new ExpenditureViewModel
            {
                Amount   = 10,
                Category = "TEST",
                Id       = Guid.NewGuid(),
                UserId   = Guid.NewGuid()
            };

            validAddExpenditureResponse =
                new AddExpenditureResponse {
                Expenditure = validExpenditureProxy, RequestReference = Guid.NewGuid()
            };

            validEditExpenditureResponse =
                new EditExpenditureResponse {
                Expenditure = validExpenditureProxy, RequestReference = Guid.NewGuid()
            };

            validGetExpenditureForUserResponse =
                new GetExpenditureForUserResponse
            {
                Expenditure =
                    new List <ExpenditureProxy> {
                    validExpenditureProxy
                },
                RequestReference = Guid.NewGuid()
            };

            validGetExpenditureForUserForMonthResponse =
                new GetExpenditureForUserForMonthResponse
            {
                Data =
                    new List <ExpenditureProxy> {
                    validExpenditureProxy
                }
            };
        }
        public void SetUp()
        {
            validViewModel = new ExpenditureViewModel
            {
                Amount   = 10,
                Category = "TEST",
                Id       = Guid.NewGuid(),
                UserId   = Guid.NewGuid()
            };

            validExpenditureProxy = new ExpenditureProxy
            {
                Amount   = 10,
                Category =
                    new CategoryProxy
                {
                    Id   = Guid.NewGuid(),
                    Name = "TEST"
                },
                CategoryId = Guid.NewGuid(),
                Id         = Guid.NewGuid(),
                UserId     = Guid.NewGuid()
            };

            validTrackExpenditureViewModel = new TrackExpenditureViewModel();

            validDeleteExpenditureRequest = new DeleteExpenditureRequest {
                ExpenditureId = validExpenditureProxy.Id
            };
            validDeleteExpenditureResponse = new DeleteExpenditureResponse {
                DeleteSuccess = true
            };
            validAddExpenditureRequest = new AddExpenditureRequest {
                Expenditure = validExpenditureProxy
            };
            validAddExpenditureResponse = new AddExpenditureResponse {
                Expenditure = validExpenditureProxy
            };
            validGetExpenditureRequest = new GetExpenditureRequest {
                ExpenditureId = validExpenditureProxy.Id
            };
            validGetExpenditureResponse = new GetExpenditureResponse {
                Expenditure = validExpenditureProxy
            };
            validGetExpenditureForUserRequest = new GetExpenditureForUserRequest {
                UserId = validExpenditureProxy.Id
            };
            validGetExpenditureForUserResponse =
                new GetExpenditureForUserResponse
            {
                Expenditure = new List <ExpenditureProxy> {
                    validExpenditureProxy
                }
            };
            validEditExpenditureRequest = new EditExpenditureRequest {
                Expenditure = validExpenditureProxy
            };
            validEditExpenditureResponse = new EditExpenditureResponse {
                Expenditure = validExpenditureProxy
            };
            validGetExpenditureForUserForMonthRequest =
                new GetExpenditureForUserForMonthRequest {
                UserId = validExpenditureProxy.Id
            };
            validGetExpenditureForUserForMonthResponse =
                new GetExpenditureForUserForMonthResponse
            {
                Data =
                    new List <ExpenditureProxy> {
                    validExpenditureProxy
                }
            };

            invalidExpenditureViewModel = new ExpenditureViewModel {
                Id = Guid.NewGuid()
            };
            invalidAddExpenditureRequest  = new AddExpenditureRequest();
            invalidAddExpenditureResponse = new AddExpenditureResponse {
                Errors = { new ResponseErrorWrapper() }
            };
            invalidGetExpenditureRequest  = new GetExpenditureRequest();
            invalidGetExpenditureResponse = new GetExpenditureResponse {
                Errors = { new ResponseErrorWrapper() }
            };
            invalidDeleteExpenditureRequest  = new DeleteExpenditureRequest();
            invalidDeleteExpenditureResponse =
                new DeleteExpenditureResponse {
                Errors = { new ResponseErrorWrapper() }
            };
            invalidGetExpenditureForUserRequest  = new GetExpenditureForUserRequest();
            invalidGetExpenditureForUserResponse =
                new GetExpenditureForUserResponse {
                Errors = { new ResponseErrorWrapper() }
            };
            invalidEditExpenditureRequest  = new EditExpenditureRequest();
            invalidEditExpenditureResponse = new EditExpenditureResponse {
                Errors = { new ResponseErrorWrapper() }
            };
            invalidGetExpenditureForUserForMonthRequest  = new GetExpenditureForUserForMonthRequest();
            invalidGetExpenditureForUserForMonthResponse =
                new GetExpenditureForUserForMonthResponse {
                Errors = { new ResponseErrorWrapper() }
            };

            assembler   = Substitute.For <IExpenditureAssembler>();
            dataAccess  = Substitute.For <IExpenditureDataAccess>();
            errorHelper = Substitute.For <IErrorHelper>();

            errorHelper.Create(Arg.Any <Exception>(), Arg.Any <string>(), Arg.Any <Type>(), Arg.Any <string>())
            .Returns(new ResponseErrorWrapper());
            errorHelper.Create(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <Type>(), Arg.Any <string>())
            .Returns(new ResponseErrorWrapper());

            assembler.NewAddExpenditureRequest(validViewModel, validUsername).Returns(validAddExpenditureRequest);
            assembler.NewAddExpenditureRequest(invalidExpenditureViewModel, validUsername)
            .Returns(invalidAddExpenditureRequest);
            assembler.NewAddExpenditureRequest(null, validUsername).Throws(new Exception("TEST EXCEPTION"));
            assembler.NewExpenditureViewModel(validAddExpenditureResponse).Returns(validViewModel);
            assembler.NewExpenditureViewModel(validEditExpenditureResponse).Returns(validViewModel);
            assembler.NewDeleteExpenditureRequest(validViewModel.Id, validUsername)
            .Returns(validDeleteExpenditureRequest);
            assembler.NewDeleteExpenditureRequest(invalidExpenditureViewModel.Id, validUsername)
            .Returns(invalidDeleteExpenditureRequest);
            assembler.NewDeleteExpenditureRequest(Guid.Empty, validUsername).Throws(new Exception("TEST EXCEPTION"));
            assembler.NewGetExpenditureRequest(validViewModel.Id, validUsername).Returns(validGetExpenditureRequest);
            assembler.NewGetExpenditureRequest(invalidExpenditureViewModel.Id, validUsername)
            .Returns(invalidGetExpenditureRequest);
            assembler.NewGetExpenditureRequest(Guid.Empty, validUsername).Throws(new Exception("TEST EXCEPTION"));
            assembler.NewGetExpenditureForUserRequest(validViewModel.Id, validUsername)
            .Returns(validGetExpenditureForUserRequest);
            assembler.NewGetExpenditureForUserRequest(invalidExpenditureViewModel.Id, validUsername)
            .Returns(invalidGetExpenditureForUserRequest);
            assembler.NewGetExpenditureForUserRequest(Guid.Empty, validUsername)
            .Throws(new Exception("TEST EXCEPTION"));
            assembler.NewEditExpenditureRequest(validViewModel, validUsername).Returns(validEditExpenditureRequest);
            assembler.NewEditExpenditureRequest(invalidExpenditureViewModel, validUsername)
            .Returns(invalidEditExpenditureRequest);
            assembler.NewEditExpenditureRequest(null, validUsername).Throws(new Exception("TEST EXCEPTION"));
            assembler.NewGetExpenditureForUserForMonthRequest(1, validViewModel.Id, validUsername)
            .Returns(validGetExpenditureForUserForMonthRequest);
            assembler.NewGetExpenditureForUserForMonthRequest(1, invalidExpenditureViewModel.Id, validUsername)
            .Returns(invalidGetExpenditureForUserForMonthRequest);
            assembler.NewTrackExpenditureViewModel(validGetExpenditureForUserResponse)
            .Returns(validTrackExpenditureViewModel);
            assembler.NewExportViewModel(Arg.Any <IList <ExpenditureProxy> >(), ExportType.Json)
            .Throws(new Exception("TEST"));

            dataAccess.AddExpenditure(validAddExpenditureRequest).Returns(validAddExpenditureResponse);
            dataAccess.AddExpenditure(invalidAddExpenditureRequest).Returns(invalidAddExpenditureResponse);
            dataAccess.DeleteExpenditure(validDeleteExpenditureRequest).Returns(validDeleteExpenditureResponse);
            dataAccess.DeleteExpenditure(invalidDeleteExpenditureRequest).Returns(invalidDeleteExpenditureResponse);
            dataAccess.GetExpenditure(validGetExpenditureRequest).Returns(validGetExpenditureResponse);
            dataAccess.GetExpenditure(invalidGetExpenditureRequest).Returns(invalidGetExpenditureResponse);
            dataAccess.GetExpenditureForUser(validGetExpenditureForUserRequest)
            .Returns(validGetExpenditureForUserResponse);
            dataAccess.GetExpenditureForUser(invalidGetExpenditureForUserRequest)
            .Returns(invalidGetExpenditureForUserResponse);
            dataAccess.EditExpenditure(validEditExpenditureRequest).Returns(validEditExpenditureResponse);
            dataAccess.EditExpenditure(invalidEditExpenditureRequest).Returns(invalidEditExpenditureResponse);
            dataAccess.GetExpenditureForUserForMonth(validGetExpenditureForUserForMonthRequest)
            .Returns(validGetExpenditureForUserForMonthResponse);
            dataAccess.GetExpenditureForUserForMonth(invalidGetExpenditureForUserForMonthRequest)
            .Returns(invalidGetExpenditureForUserForMonthResponse);

            assembler.NewExportViewModel(new List <ExpenditureProxy> {
                validExpenditureProxy
            }, ExportType.Csv)
            .Returns(new ExportViewModel());

            orchestrator = new ExpenditureOrchestrator(assembler, dataAccess, errorHelper);
        }