/// <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; }
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); }