public PartialViewResult ChangeClientAccount(ChangeClientAccountModel model) { bool isOperationValid = true; if (model.Id.HasValue && ModelState.IsValid) //Счет должен быть известен, без вариантов { // Получаем Id клиента по Id его счета long?clientId = ClientAccountRepo.GetClientIdByAccountId(model.Id.Value); // Еще раз делаем проверку - является ли клиент дилером и не изменяет свой счет. if (clientId.HasValue && ValidateAccountChangeAction(clientId.Value)) { ChangeClientAccountModel emptyModel = GetClientAccountChangeModel(clientId.Value); if (emptyModel != null) //Только если мы точно уверены в Id счета и легитимности его изменения { CostCalculator calc = new CostCalculator(model.CalcMode); calc.RecalcModel(model); isOperationValid = ClientAccountRepo.ChangeAccount(model); if (isOperationValid) { model = emptyModel; ViewData.Add("AccountUpdated", true); } } } } return(PartialView("ChangeClientAccount", model)); }
public void RecalcModel(ChangeClientAccountModel account) { switch (_mode) { case CostCalculatorMode.FixedMoney: account.OneSMSCost = account.InputMoney / account.AddingAmount; break; default: //Если фиксированная цена или количество СМС account.InputMoney = account.AddingAmount * account.OneSMSCost; break; } }
private ChangeClientAccountModel GetClientAccountChangeModel(long clientId) { ChangeClientAccountModel model = null; if (ValidateAccountChangeAction(clientId)) { //Возвращает null если записи не найдены model = ClientAccountRepo.GetClientAccountChange(clientId); if (model == null) { ModelState.AddModelError(string.Empty, "Вы не можете изменять счет чужого клиента."); } } if (model == null) { model = new ChangeClientAccountModel(); } return(model); }
public PartialViewResult ChangeClientAccount(long clientId) { ChangeClientAccountModel model = GetClientAccountChangeModel(clientId); return(PartialView("ChangeClientAccount", model)); }
public bool ChangeAccount(ChangeClientAccountModel model) { return(Convert.ToBoolean(DataContext.ChangeClientAccount(model.Id, model.AddingAmount, model.OneSMSCost, model.InputMoney, model.SelectedCostRangeId, model.Comment, (Guid)LoginedUser.ProviderUserKey, RealClientId, OperationalClientId))); }