public ActionResult Edit(Rp3.Test.Mvc.Models.TransactionEditModel editModel)
        {
            Rp3.Test.Proxies.Proxy proxy = new Proxies.Proxy();

            int accountId = Convert.ToInt32(System.Web.HttpContext.Current.Session["AccountId"]);

            List <TransactionType> transactionTypeList  = proxy.GetTransactionTypes();
            List <SelectListItem>  transactionTypeItems = transactionTypeList.Select(x => GetTransactionTypeItem(x)).ToList();

            editModel.TransactionTypeSelectList = new SelectList(transactionTypeItems, "Value", "Text", 1);

            List <Category>       categoryList  = proxy.GetCategories();
            List <SelectListItem> categoryItems = categoryList.Select(x => GetCategoryItem(x)).ToList();

            editModel.CategorySelectList = new SelectList(categoryItems, "Value", "Text", 1);

            if (editModel.Amount <= 0)
            {
                ModelState.AddModelError("Amount", "El monto debe ser mayor a cero");
            }

            if (!ModelState.IsValid)
            {
                return(View(editModel));
            }

            Rp3.Test.Common.Models.Transaction commonModel = new Common.Models.Transaction();

            commonModel.TransactionId     = editModel.TransactionId;
            commonModel.TransactionTypeId = editModel.TransactionTypeId;
            commonModel.CategoryId        = editModel.CategoryId;
            commonModel.AccountId         = accountId;
            commonModel.Amount            = editModel.Amount;
            commonModel.ShortDescription  = editModel.ShortDescription;
            commonModel.Notes             = editModel.Notes;

            bool respondeOk = proxy.UpdateTransaction(commonModel);

            if (respondeOk)
            {
                return(RedirectToAction("Index"));
            }
            else
            {
                return(View(editModel));
            }
        }
        public ActionResult Index(Rp3.Test.Mvc.Models.TransactionEditModel model)
        {
            if (model != null)
            {
                Proxies.Proxy proxy = new Proxies.Proxy();

                //Validamos si es para crear o actualizar
                if (model.TransactionId > 0)
                {
                    //Actualizar
                    proxy.UpdateTransaction(new Common.Models.Transaction()
                    {
                        TransactionId     = model.TransactionId,
                        TransactionTypeId = model.TransactionTypeId,
                        Amount            = model.Amount,
                        CategoryId        = model.CategoryId,
                        Notes             = model.Notes,
                        RegisterDate      = model.RegisterDate,
                        ShortDescription  = model.ShortDescription,
                        PersonId          = PersonController.PersonId.Value
                    });
                }
                else
                {
                    //Crear
                    proxy.InsertTransaction(new Common.Models.Transaction()
                    {
                        TransactionTypeId = model.TransactionTypeId,
                        Amount            = model.Amount,
                        CategoryId        = model.CategoryId,
                        Notes             = model.Notes,
                        RegisterDate      = model.RegisterDate,
                        ShortDescription  = model.ShortDescription,
                        PersonId          = PersonController.PersonId.Value
                    });
                }
            }
            return(Index());
        }