public JsonResult SavePayoutMethodPayments(List <PayoutPayment> payments)
        {
            if (!AuthorizationProvider.CanEditStatement())
            {
                return(Forbidden());
            }

            try
            {
                // create/update payments
                var provider = new PayoutPaymentProvider(_dbContext);
                provider.SavePayoutMethodPayments(payments);

                // add a statement completion record for the payment month
                if (payments != null && payments.Count > 0)
                {
                    var nextMonth          = (new DateTime(payments[0].PaymentYear, payments[0].PaymentMonth, 1)).AddMonths(1);
                    var completionProvider = new StatementCompletionProvider(_dbContext);
                    completionProvider.New(nextMonth);
                }

                return(Json("success", JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(ex.Message, JsonRequestBehavior.AllowGet));
            }
        }
        public OwnerStatementController(DojoDbContext context)
        {
            _dbContext        = context;
            ViewBag.EditClass = AuthorizationProvider.CanEditStatement() ? string.Empty : " revenue-field-readonly";
            bool isFreezed = (new StatementCompletionProvider(_dbContext)).IsCompleted(DateTime.Today);

            ViewBag.EditFreezed = isFreezed ? "edit-freezed" : string.Empty;
        }
 public ActionResult RebalanceEditor(int id, DateTime data)
 {
     if (!AuthorizationProvider.CanEditStatement())
     {
         return(Forbidden());
     }
     try
     {
         var provider = new OwnerPaymentProvider(_dbContext);
         var editor   = provider.GetBalancesForPayoutMethod(id, data);
         return(PartialView("_RebalancePartial", editor));
     }
     catch
     {
         return(PartialView("_RebalancePartial", new RebalanceEditModel()));
     }
 }
 public ActionResult PaymentEditor(DateTime month)
 {
     if (!AuthorizationProvider.CanEditStatement())
     {
         return(Forbidden());
     }
     try
     {
         var provider = new OwnerPaymentProvider(_dbContext);
         var editor   = provider.GetPayoutBalancesForMonth(month);
         return(PartialView("_PayoutMethodPaymentPartial", editor));
     }
     catch
     {
         return(PartialView("_PayoutMethodPaymentPartial", new PayoutMethodPaymentEditModel()));
     }
 }
        public ActionResult Index()
        {
            if (!AuthorizationProvider.CanEditStatement())
            {
                return(Forbidden());
            }

            ViewBag.ReviewerClass      = AuthorizationProvider.CanReviewRevenue() ? "revenue-grid-reviewer" : string.Empty;
            ViewBag.ApproverClass      = AuthorizationProvider.CanApproveRevenue() ? "revenue-grid-approver" : string.Empty;
            ViewBag.FinalizerClass     = AuthorizationProvider.CanFinalizeRevenue() ? "revenue-grid-finalizer" : string.Empty;
            ViewBag.EditClass          = AuthorizationProvider.CanEditStatement() ? string.Empty : " revenue-field-readonly";
            ViewBag.AdminClass         = AuthorizationProvider.IsRevenueAdmin() ? "revenue-grid-remover" : string.Empty;
            ViewBag.CanFreezeEditing   = AuthorizationProvider.CanFreezeEditing() ? true : false;
            ViewBag.StatementCompleted = (new StatementCompletionProvider(_dbContext)).IsCompleted(DateTime.Today);

            return(View());
        }
        public JsonResult RetrievePayoutMethodPayments(DateTime month)
        {
            if (!AuthorizationProvider.CanEditStatement())
            {
                return(Forbidden());
            }

            try
            {
                var provider = new OwnerPaymentProvider(_dbContext);
                var model    = provider.Retrieve(month);
                return(Json(model, JsonRequestBehavior.AllowGet));
            }
            catch
            {
                return(Json(new PayoutMethodPaymentViewModel(), JsonRequestBehavior.AllowGet));
            }
        }
        public JsonResult RedistributeBalances(List <PropertyBalance> balances)
        {
            if (!AuthorizationProvider.CanEditStatement())
            {
                return(Forbidden());
            }

            try
            {
                var provider = new PropertyBalanceProvider(_dbContext);
                provider.RedistributeBalance(balances);
                return(Json("success", JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(ex.Message, JsonRequestBehavior.AllowGet));
            }
        }
        public JsonResult UpdateBalances(DateTime month)
        {
            if (!AuthorizationProvider.CanEditStatement())
            {
                return(Forbidden());
            }

            try
            {
                var provider = new PropertyBalanceProvider(_dbContext);
                provider.UpdateNextMonthBalances(month);
                return(Json("success", JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(ex.Message, JsonRequestBehavior.AllowGet));
            }
        }
        public JsonResult FinalizeSummary(DateTime month, string payoutMethod, string note, bool isFinalized = true)
        {
            if (!AuthorizationProvider.CanEditStatement())
            {
                return(Forbidden());
            }

            try
            {
                var statementProvider = new OwnerStatementProvider(_dbContext);
                statementProvider.FinalizeSummary(month, payoutMethod, note, isFinalized);
                return(Json("success", JsonRequestBehavior.AllowGet));
            }
            catch
            {
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                return(Json("fail", JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult SummaryRebalance(DateTime month, string payoutMethod)
        {
            if (!AuthorizationProvider.CanEditStatement())
            {
                return(Forbidden());
            }

            var model = new OwnerSummaryRebalanceModel
            {
                PayoutMethod      = payoutMethod,
                PayoutMonth       = month.Month,
                PayoutYear        = month.Year,
                RebalanceDate     = month,
                SummaryProperties = new PayoutMethodProvider(_dbContext).PropertyList(payoutMethod, month),
                PropertyBalances  = new PayoutMethodProvider(_dbContext).PropertyBalances(payoutMethod, month)
            };

            return(PartialView("_RebalancePartial", model));
        }
        public JsonResult Finalize(DateTime month, string propertyCode, string note, bool isFinalized = true)
        {
            if (!AuthorizationProvider.CanEditStatement())
            {
                return(Forbidden());
            }

            try
            {
                var provider  = new OwnerStatementProvider(_dbContext);
                var viewModel = provider.GetOwnerStatement(month, propertyCode);
                var result    = provider.FinalizeStatement(month, propertyCode, note, viewModel.EndingBalance, isFinalized);
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch
            {
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                return(Json(false, JsonRequestBehavior.AllowGet));
            }
        }