public JsonResult SaveRevenue(OwnerPayoutRevenueModel form)
        {
            if (!AuthorizationProvider.CanEditRevenue())
            {
                string message = string.Format("User '{0}' does not have permission to save Owner Payout {1}.", this.User.Identity.Name, form.OwnerPayoutId.ToString());
                DojoLogger.Warn(message, typeof(OwnerPayoutController));
                Response.StatusCode = (int)System.Net.HttpStatusCode.Forbidden;
                return(Json(string.Empty, JsonRequestBehavior.AllowGet));
            }

            try
            {
                // treat checkin and checkout date as Hawaii time zone and covert it to UTC by adding 11 hours.
                if (form.PayoutDate != null)
                {
                    form.PayoutDate = ConversionHelper.ToUtcFromUs(form.PayoutDate.Value);
                }

                var dataProvider = new OwnerPayoutRevenueProvider(_dbContext);

                if (form.OwnerPayoutId == 0) // new OwnerPayout
                {
                    if (dataProvider.GetKey(form) != 0)
                    {
                        Response.StatusCode = (int)System.Net.HttpStatusCode.Conflict; // code = 409
                        return(Json(string.Empty, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        dataProvider.Create(form);
                    }
                }
                else // updating OwnerPayout
                {
                    dataProvider.Update(form.OwnerPayoutId, form);
                }

                dataProvider.Commit(); // OwnerPayoutId will be filled for new OwnerPayout by EF

                // get the OwnerPayout ID
                if (form.OwnerPayoutId == 0)
                {
                    form.OwnerPayoutId = dataProvider.GetKey(form);
                }

                var provider = new OwnerPayoutProvider(_dbContext);
                provider.UpdateOwnerPayoutMatchStatus(form.OwnerPayoutId);

                return(Json(form.OwnerPayoutId.ToString(), JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                var    innerErrorMessage = ex.InnerException != null ? ex.InnerException.Message : string.Empty;
                string message           = string.Format("Saving Owner Payout {0} fails. {1},{2}", form.OwnerPayoutId.ToString(), ex.Message, innerErrorMessage);
                DojoLogger.Error(message, typeof(OwnerPayoutController));
                Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError;
                return(Json(string.Empty, JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 2
0
        public void MapData(OwnerPayoutRevenueModel model, OwnerPayout entity, bool isNew = false)
        {
            // map form fields
            entity.AccountNumber = model.PayToAccount;
            entity.PayoutAmount  = model.PayoutAmount;
            entity.PayoutDate    = ConversionHelper.EnsureUtcDate(model.PayoutDate);
            entity.Source        = model.Source;

            if (isNew)
            {
                entity.IsDeleted         = false;
                entity.InputSource       = AppConstants.MANUAL_INPUT_SOURCE;
                entity.DiscrepancyAmount = 0;
                entity.IsAmountMatched   = true;
            }
            else
            {
                // DiscrepancyAmount field are calcuated on-the-fly in owner payout query
                // IsAmountMatched is obsolete
            }
        }