Beispiel #1
0
        public AddBankAccountResponseMoodel Save(AddBankAccountInputModel data)
        {
            UserBank temp = new UserBank();

            temp.AccountName    = data.AccountName;
            temp.AccountNumber  = data.AccountNumber;
            temp.BankID         = data.BankID;
            temp.ID             = Guid.NewGuid();
            temp.isSelected     = data.isSelected;
            temp.UserID         = data.UserID;
            temp.CreateByUserID = data.UserID;
            temp.CreateDate     = DateTime.Now;

            UserBankRepository repo = new UserBankRepository(db);

            var res = repo.Insert(temp);

            AddBankAccountOutputModel output = new AddBankAccountOutputModel();

            output.BankID = data.BankID;
            output.UserID = data.UserID;

            AddBankAccountResponseMoodel response = new AddBankAccountResponseMoodel();

            response.data     = output;
            response.Message  = res.Message;
            response.Response = res.Result;

            return(response);
        }
Beispiel #2
0
        public string DoTKAction(decimal tkmoney, int id)
        {
            string lycResult = "";

            try
            {
                using (FamilyCaiWuDBEntities db2 = new FamilyCaiWuDBEntities())
                {
                    Apply_Sub s = db2.Apply_Sub.Where(c => c.ID == id).SingleOrDefault();
                    if (s == null)
                    {
                        throw new Exception("此记账信息已不存在,无法执行退款操作!");
                    }
                    if (s.InOutType != "out" || s.CashOrBank != 1)
                    {
                        throw new Exception("此记账信息不是【银行支出记账】,无法执行退款操作!");
                    }
                    if (s.UserBankID == null || s.UserBankID.Value == 0)
                    {
                        throw new Exception("此记账信息不是【银行记账】,无法执行退款操作!");
                    }
                    if (tkmoney == s.iMoney)
                    {
                        throw new Exception("退款金额与原记账金额相同,请直接执行删除操作!");
                    }
                    if (tkmoney > s.iMoney)
                    {
                        throw new Exception("退款金额大于原记账金额,无法执行退款操作!");
                    }

                    //1. 修改原记账信息的 备注、记账金额字段
                    decimal newMoney = s.iMoney - tkmoney;
                    s.CAdd   = s.CAdd + ";原记账金额:" + s.iMoney + " 元,现在退款:" + tkmoney + " 元,最终记账金额是:" + newMoney + " 元;";
                    s.iMoney = newMoney;

                    //2. 修改对应的银行余额信息
                    UserBank ub = db2.UserBanks.Where(c => c.ID == s.UserBankID.Value).SingleOrDefault();
                    if (ub == null)
                    {
                        throw new Exception("此记账信息中的银行信息已不存在,无法执行退款操作!");
                    }
                    ub.NowMoney = ub.NowMoney + tkmoney;

                    //3. 修改记账主信息的支出合计
                    Apply_Main m = db2.Apply_Main.Where(c => c.ID == s.ApplyMain_BillCode).SingleOrDefault();
                    if (m != null)
                    {
                        m.ApplyOutMoney = m.ApplyOutMoney - tkmoney;
                    }

                    db2.SaveChanges();
                }
                lycResult = WebComm.ReturnAlertMessage(ActionReturnStatus.成功, "退款成功!", "ApplyInfoListNav", "", CallBackType.none, "");
            }
            catch (Exception ex)
            {
                lycResult = WebComm.ReturnAlertMessage(ActionReturnStatus.失败, "退款失败!" + ex.Message, "", "", CallBackType.none, "");
            }
            return(lycResult);
        }
        public void DeleteUserBank(UserBank bank)
        {
            bank.IsDeleted = true;

            manager.UpdateCustomerBank(bank);
            UpdateBankForUser(bank);
        }
Beispiel #4
0
        public Response Insert(UserBank data)
        {
            string   message = "Failed";
            bool     result  = false;
            Response res     = new Response();

            try
            {
                db.Add(data);

                db.SaveChanges();

                message = "Save data bank success";
                result  = true;

                res.ID      = data.ID;
                res.Message = message;
                res.Result  = result;

                return(res);
            }
            catch (Exception ex)
            {
                res.Message = ex.Message;
                res.Result  = false;

                return(res);
            }
        }
 private void button1_Click(object sender, EventArgs e)
 {
     if (textBox1.Text == "1234")
     {
         this.Hide();
         UserBank newForm = new UserBank();
         newForm.ShowDialog();
         this.Close();
     }
     else
     {
         if (y != 0)
         {
             --y;
             MessageBox.Show("Перевірте правильність паролю \n Залишилось " + y + " спроб", "Неправильний пароль", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         else if (y == 0)
         {
             MessageBox.Show("Перевірте правильність паролю \n Залишилось " + y + " спроб", "Неправильний пароль", MessageBoxButtons.OK, MessageBoxIcon.Error);
             this.Hide();
             Main newForm = new Main();
             newForm.ShowDialog();
             this.Close();
         }
     }
 }
        public ActionResult DeleteConfirmed(string id)
        {
            UserBank userBank = db.UserBanks.Find(id);

            db.UserBanks.Remove(userBank);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        /// <summary>
        /// Creates a one-time payment, to be processed on a specific date.
        /// Use this method for move in/out stuff like security deposits, pro-rated rent, etc.
        /// </summary>
        /// <param name="bank">The user's bank account.</param>
        /// <param name="amount">The amount to charge the user.</param>
        /// <param name="payDate">The date to process the transaction.</param>
        /// <returns>The result of the payment type. If it failed, the ErrorMessage property
        /// will explain what happened.</returns>
        public SinglePaymentResult CreateSinglePayment(UserBank bank, decimal amount, DateTime payDate)
        {
            if (bank.PayerAlias == null)
            {
                throw new ArgumentNullException("Bank account alias is null.");
            }

            return(manager.CreateSinglePayment(bank.PayerAlias.Value, amount, payDate, PaymentType.ACH));
        }
        public void JoinNextHand(Player player, int seatIndex, double buyIn)
        {
            if (!Players.Contains(player, new Utility.AddressComparer <Player>()))
            {
                throw new PlayerNotFoundException("the user doesn't have this player");
            }

            gameCenter.JoinNextHand(player, seatIndex, buyIn);
            UserBank.Withdraw(buyIn);
        }
 public ActionResult Edit([Bind(Include = "ID,Item_indexes")] UserBank userBank)
 {
     if (ModelState.IsValid)
     {
         db.Entry(userBank).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(userBank));
 }
        public ActionResult Create([Bind(Include = "ID,Item_indexes")] UserBank userBank)
        {
            if (ModelState.IsValid)
            {
                db.UserBanks.Add(userBank);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(userBank));
        }
Beispiel #11
0
        /// <summary>
        /// Updates a Payforward (payee) customer profile for the user.
        /// </summary>
        /// <param name="bank"></param>
        /// <returns></returns>
        void UpdatePayeeCustomer(UserBank bank)
        {
            string addressLine = string.Format("{0} {1}", bank.Address1, bank.Address2);

            var payeeAlias = payClient.ModifyPayee(
                this.clientId, this.clientCode, bank.UserId.ToString(), bank.PayeeAlias.Value,
                bank.FirstName, bank.LastName, "", addressLine,
                bank.City, bank.State, bank.Zip,
                "USA", bank.Phone, "",
                bank.Email, bank.RoutingNumber, bank.AccountNumber, bank.AccountName, bank.AccountType);
        }
Beispiel #12
0
        /// <summary>
        /// Creates a one-time credit, most likely to a landlord, on a specific date.
        /// </summary>
        /// <param name="bank">The user's bank account.</param>
        /// <param name="amount">The amount to credit the user's account.</param>
        /// <param name="payDate">The date to process the transaction.</param>
        /// <returns>The result of the payment type. If it failed, the ErrorMessage property
        /// will explain what happened.</returns>
        public SinglePayeeCreditResult CreateSinglePayeeCredit(UserBank bank, decimal amount, DateTime payDate)
        {
            if (bank.PayeeAlias == null)
            {
                throw new ArgumentNullException("Bank account alias is null.");
            }

            var payType = bank.AccountType == "Checking" ?
                          PayforwardPaymentType.Checking : PayforwardPaymentType.Savings;

            return(manager.CreateSinglePayeeCredit(bank.PayeeAlias.Value, amount, payDate, payType));
        }
        public ActionResult Edit(int id = 0)
        {
            //绑定银行卡类型
            ViewBag.CardTypeList = WebComm.GetBankCardType();
            UserBank userbank = db.UserBanks.Find(id);

            if (userbank == null)
            {
                return(RedirectToAction("GoTo404Page", "CommView"));
            }
            return(View(viewFolder + "Edit.cshtml", userbank));
        }
Beispiel #14
0
        /// <summary>
        /// Efetua a conversão de um tipo UserBankModel  para um tipo UserBank (DTO)
        /// </summary>
        /// <returns>UserBank com os dados da model</returns>
        public static UserBank UserBankModelToUserBank(UserBankModel bankModel)
        {
            UserBank dao = new UserBank
            {
                Account = bankModel.Account,
                Agency  = bankModel.Agency,
                BankID  = bankModel.BankID,
                ID      = bankModel.ID
            };

            return(dao);
        }
        // GET: UserBanks/Delete/5
        public ActionResult Delete(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            UserBank userBank = db.UserBanks.Find(id);

            if (userBank == null)
            {
                return(HttpNotFound());
            }
            return(View(userBank));
        }
        public ActionResult List(UserBank uBank)
        {
            int pageNO = 1;

            if (Request.Form["pageNum"] != null)
            {
                int.TryParse(Request.Form["pageNum"], out pageNO);
            }
            BindBankCardType();
            BindComboxUser();
            List <UserBank> list = GetUserBankList(pageNO, uBank);

            return(View(viewFolder + "List.cshtml", list));
        }
Beispiel #17
0
        /// <summary>
        /// In order to allow a user to store multiple bank accounts,
        /// we create a 'customer' for each account. This will create the
        /// customer and store the bank account information.
        /// </summary>
        /// <param name="bank"></param>
        /// <returns>The UserBank. If it is a new entry, the object will be
        /// returned with the Alias created for the bank account.</returns>
        public UserBank UpdateCustomerBank(UserBank bank)
        {
            //if they haven't stored this account before,
            //create a customer
            if (!bank.PayerAlias.HasValue)
            {
                string addressLine = string.Format("{0} {1}", bank.Address1, bank.Address2);

                var customer = new ModpayCustomer()
                {
                    AccountReference = bank.UserId.ToString(),
                    Address          = addressLine,
                    City             = bank.City,
                    PayerAlias       = bank.PayerAlias,
                    FirstName        = bank.FirstName,
                    LastName         = bank.LastName,
                    Phone            = bank.Phone,
                    Email            = bank.Email,
                    State            = bank.State,
                    Zip = bank.Zip
                };

                //store the customer info
                customer.PayerAlias = CreatePayerCustomer(customer);
                bank.PayerAlias     = customer.PayerAlias;
            }

            //and then store the payer bank account
            modClient.ModifyCustomerBankAcct(
                this.clientId, this.clientCode, bank.PayerAlias.Value,
                bank.AccountName, bank.RoutingNumber, bank.AccountNumber,
                bank.AccountType);

            //also create or modify the payee account, if they don't have one.
            if (!bank.PayeeAlias.HasValue)
            {
                bank.PayeeAlias = CreatePayeeCustomer(bank);
            }
            else
            {
                UpdatePayeeCustomer(bank);
            }

            //mask account info
            bank.AccountNumber = this.MaskNumber(bank.AccountNumber);
            bank.RoutingNumber = this.MaskNumber(bank.RoutingNumber);

            return(bank);
        }
Beispiel #18
0
        /// <summary>
        /// Creates a customer profile for the user. Note: set
        /// the customer's AccountReference to their UserId; this is an
        /// optional field we can use for reference.
        /// </summary>
        /// <param name="bank"></param>
        /// <returns>A long representing the customer's unique id. Store this as
        /// the user's Alias.</returns>
        long CreatePayeeCustomer(UserBank bank)
        {
            var accType = bank.AccountType == "Checking" ? "1" : "2";

            string addressLine = string.Format("{0} {1}", bank.Address1, bank.Address2);

            var payeeAlias = payClient.CreatePayforwardPayee(
                this.clientId, this.clientCode, bank.UserId.ToString(),
                bank.FirstName, bank.LastName, "", addressLine,
                bank.City, bank.State, bank.Zip,
                "USA", bank.Phone, "",
                bank.Email, bank.RoutingNumber, bank.AccountNumber, bank.AccountName, accType);

            return(payeeAlias);
        }
Beispiel #19
0
        // POST api/UserBank_WebAPI
        public HttpResponseMessage PostUserBank(UserBank userbank)
        {
            if (ModelState.IsValid)
            {
                db.UserBanks.Add(userbank);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, userbank);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = userbank.ID }));
                return(response);
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }
        }
        public double StandUpToSpactate(Player player)
        {
            if (!Players.Contains(player, new AddressComparer <Player>()))
            {
                throw new PlayerNotFoundException("the user doesn't have this player");
            }

            //Player is not ActiveFolded
            if (player.CurrentState != Player.State.ActiveFolded)
            {
                throw new RoomRulesException("Player is not in ActiveFolded state");
            }

            UserBank.Deposit(gameCenter.StandUpToSpactate(player));

            return(UserBank.Money);
        }
Beispiel #21
0
 private void Btn_start_Click(object sender, EventArgs e)
 {
     // Check if its allowed to start another game.
     if (Allowed)
     {
         btn_start.BackColor = Color.Lime;                                                                      // Update button color just to be sure.
         txt_inzet.ReadOnly  = false;                                                                           // Allow the user to enter a value in the box, this should be enabled but your never know...
         btn_start.Cursor    = Cursors.Hand;                                                                    // Update cusor to be sure.
         txt_inzet.Cursor    = Cursors.IBeam;                                                                   // Update cusor to be sure.
         lbl_state.Visible   = lbl_info.Visible = ptb_status.Visible = btn_Ok.Visible = btn_Ok.Enabled = false; // Disable the element.
         if (txt_inzet.Text == "")                                                                              // Check if the user entered a value.
         {
             lbl_error.Font = new Font("Microsoft Sans Serif", 30, FontStyle.Regular);
             lbl_error.Text = "Geef een inzet!";
         }
         else if (int.Parse(txt_inzet.Text) < 9)     // check if the user its value is greater than 9.
         {
             lbl_error.Font = new Font("Microsoft Sans Serif", 22, FontStyle.Regular);
             lbl_error.Text = "Minimum inzet is 10!";
         }
         else     // Start game.
         {
             lbl_balance.Text    = "Chips waarde: €" + UserBank.ToString();
             lbl_error.Text      = "";
             this.Size           = new System.Drawing.Size(980, 765);
             btn_start.BackColor = Color.DarkRed;
             txt_inzet.ReadOnly  = true;
             btn_start.FlatAppearance.MouseOverBackColor = btn_start.FlatAppearance.MouseDownBackColor = btn_start.BackColor;
             btn_start.Enabled = false;
             txt_inzet.Cursor  = Cursors.No;
             UserBet           = int.Parse(txt_inzet.Text);
             this.CenterToScreen();
             HostTotal          = UserTotal = 0;
             HostTotal         += HostRN = RN.Next(1, 14);
             ptb_host_1.Image   = Image.FromFile("assets/" + HostRN + ".png");
             UserTotal         += UserRN = RN.Next(1, 14);
             ptb_1.Image        = Image.FromFile("assets/" + UserRN + ".png");
             HostTotal         += RN.Next(1, 14);
             ptb_host_6.Visible = true;
             ptb_host_6.Image   = Image.FromFile("assets/back_blue.png");
             UserTotal         += UserRN = RN.Next(1, 14);
             ptb_2.Image        = Image.FromFile("assets/" + UserRN + ".png");
             count += 2;
         }
     }
 }
Beispiel #22
0
        public Response Edit(UserBank data)
        {
            string   message = "Failed";
            bool     result  = false;
            Response res     = new Response();

            try
            {
                if (data.ID != Guid.Empty)
                {
                    var find = db.UserBank.Where(x => x.ID == data.ID && x.DeletedDate == null).FirstOrDefault();

                    if (find != null)
                    {
                        find.BankID        = data.BankID;
                        find.UserID        = data.UserID;
                        find.AccountName   = data.AccountName;
                        find.AccountNumber = data.AccountNumber;
                        find.isSelected    = data.isSelected;

                        db.SaveChanges();

                        message = "Update data Bank success";
                        result  = true;
                    }
                    else
                    {
                        message = "Data Bank User tidak di temukan hubungi admin!";
                    }
                }

                res.ID      = data.ID;
                res.Message = message;
                res.Result  = result;

                return(res);
            }
            catch (Exception ex)
            {
                res.Message = ex.Message;
                res.Result  = false;

                return(res);
            }
        }
Beispiel #23
0
        /// <summary>
        /// Takes care of storing the user's bank account information.
        /// If it is a new card, it will create a new entry in the payment system
        /// and in our own storage. If it is just an update (e.g. the user changing their
        /// address information), it will act accordingly.
        /// </summary>
        /// <param name="bank">The user's bank account.</param>
        public void UpdateBankForUser(UserBank bank)
        {
            bank = manager.UpdateCustomerBank(bank);

            if (bank.UserBankId == 0)
            {
                CreateBankForUser(bank);
            }
            else
            {
                using (var context = new RentlerContext())
                {
                    var toUpdate = (from u in context.UserBanks
                                    where u.UserId == bank.UserId &&
                                    u.UserBankId == bank.UserBankId
                                    select u).SingleOrDefault();

                    if (toUpdate == null)
                    {
                        throw new ArgumentNullException();
                    }

                    toUpdate.AccountName   = bank.AccountName;
                    toUpdate.AccountNumber = bank.AccountNumber;
                    toUpdate.AccountType   = bank.AccountType;
                    toUpdate.PayerAlias    = bank.PayerAlias;
                    toUpdate.PayeeAlias    = bank.PayeeAlias;
                    toUpdate.RoutingNumber = bank.RoutingNumber;
                    toUpdate.Address1      = bank.Address1;
                    toUpdate.Address2      = bank.Address2;
                    toUpdate.City          = bank.City;
                    toUpdate.Email         = bank.Email;
                    toUpdate.FirstName     = bank.FirstName;
                    toUpdate.LastName      = bank.LastName;
                    toUpdate.Phone         = bank.Phone;
                    toUpdate.State         = bank.State;
                    toUpdate.Zip           = bank.Zip;
                    toUpdate.IsDeleted     = bank.IsDeleted;

                    context.SaveChanges();
                }
            }
        }
        public ActionResult Create([Bind(Include = "ID,Description,priority")] List_Items list_Items)
        {
            if (ModelState.IsValid)
            {
                //pulls all stored index objects from database and if one matches current user, updates the list of indexes in that object upon list item creation
                List <UserBank> banklist = new List <UserBank>();
                banklist = db.UserBanks.ToList();
                foreach (UserBank u in banklist)
                {
                    if (u.AppUserID == User.Identity.GetUserId())
                    {
                        db.List_Items.Add(list_Items);
                        db.SaveChanges();

                        //this is important because saving the context to the database may change the list item's primary key value

                        int ind = db.Entry(list_Items).CurrentValues.GetValue <int>("ID");
                        u.Item_indexes    = u.Item_indexes + ind.ToString() + ",";
                        db.Entry(u).State = EntityState.Modified;
                        db.SaveChanges();
                        return(RedirectToAction("Index"));
                    }
                }

                //this code is only reached if no existing userbank object is found which matches current user ID (i.e. when new user creates list item for the first time).
                //creates new userbank object and stores the new list item's index.
                db.List_Items.Add(list_Items);
                db.SaveChanges();
                UserBank newbank = new UserBank();
                newbank.AppUserID    = User.Identity.GetUserId();
                newbank.Item_indexes = "";

                //this is important because saving the context to the database may change the list item's primary key value

                int indd = db.Entry(list_Items).CurrentValues.GetValue <int>("ID");
                newbank.Item_indexes = newbank.Item_indexes + indd.ToString() + ",";
                db.UserBanks.Add(newbank);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(list_Items));
        }
        public string Edit(UserBank userbank)
        {
            try
            {
                User loginUser = Session[SessionList.FamilyManageUser.ToString()] as User;
                userbank.BankID   = Convert.ToInt32(Request.Form["search_bank.BankID"]);
                userbank.BankName = Request.Form["search_bank.BankName"];
                userbank.UserID   = loginUser.ID;
                userbank.UserName = loginUser.cUserName;

                db.Entry(userbank).State = EntityState.Modified;
                db.SaveChanges();
                return(WebComm.ReturnAlertMessage(ActionReturnStatus.成功, "修改成功", "userBankList", "", CallBackType.none, ""));
            }
            catch (Exception ex)
            {
                return(WebComm.ReturnAlertMessage(ActionReturnStatus.失败, "修改失败" + ex.Message, "", "", CallBackType.none, ""));
            }
        }
        public string Create(UserBank userbank)
        {
            try
            {
                User loginUser = Session[SessionList.FamilyManageUser.ToString()] as User;
                userbank.BankID     = Convert.ToInt32(Request.Form["search_bank.BankID"]);
                userbank.BankName   = Request.Form["search_bank.BankName"];
                userbank.UserID     = loginUser.ID;
                userbank.UserName   = loginUser.cUserName;
                userbank.CreateDate = DateTime.Now;

                db.UserBanks.Add(userbank);
                db.SaveChanges();
                return(WebComm.ReturnAlertMessage(ActionReturnStatus.成功, "添加成功", "userBankList", "", CallBackType.none, ""));
            }
            catch (Exception ex)
            {
                return(WebComm.ReturnAlertMessage(ActionReturnStatus.失败, "添加失败!" + ex.Message, "", "", CallBackType.none, ""));
            }
        }
Beispiel #27
0
        public EditBankAccountResponseMoodel Edit(EditBankAccountInputModel data)
        {
            UserBank temp = new UserBank();

            temp.AccountName    = data.AccountName;
            temp.AccountNumber  = data.AccountNumber;
            temp.BankID         = data.BankID;
            temp.ID             = data.ID;
            temp.isSelected     = data.isSelected;
            temp.UserID         = data.UserID;
            temp.CreateByUserID = data.UserID;
            temp.CreateDate     = DateTime.Now;

            UserBankRepository repo = new UserBankRepository(db);

            var res = repo.Edit(temp);

            EditBankAccountOutputModel output = new EditBankAccountOutputModel();

            if (res.Result)
            {
                output.BankID = data.BankID;
                output.UserID = data.UserID;
            }
            else
            {
                output.BankID = Guid.Empty;
                output.UserID = Guid.Empty;
            }


            EditBankAccountResponseMoodel response = new EditBankAccountResponseMoodel();

            response.data     = output;
            response.Message  = res.Message;
            response.Response = res.Result;

            return(response);
        }
Beispiel #28
0
        // DELETE api/UserBank_WebAPI/5
        public HttpResponseMessage DeleteUserBank(int id)
        {
            UserBank userbank = db.UserBanks.Find(id);

            if (userbank == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            db.UserBanks.Remove(userbank);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, userbank));
        }
Beispiel #29
0
        public bool Update(UserBank entity)
        {
            try
            {
                var userBank = db.UserBank.SingleOrDefault(x => x.UserID == entity.UserID && x.BankName == entity.BankName);

                if (!string.IsNullOrEmpty(entity.BankName) && !string.IsNullOrEmpty(entity.STK) && !string.IsNullOrEmpty(entity.Pass))
                {
                    userBank.BankName = entity.BankName;
                    userBank.STK      = entity.STK;
                    userBank.Pass     = entity.Pass;
                    db.SaveChanges();
                    return(true);
                }
                return(false);
            }
            catch (Exception ex)
            {
                //logging
                return(false);
            }
        }
Beispiel #30
0
        // PUT api/UserBank_WebAPI/5
        public HttpResponseMessage PutUserBank(int id, UserBank userbank)
        {
            if (ModelState.IsValid && id == userbank.ID)
            {
                db.Entry(userbank).State = EntityState.Modified;

                try
                {
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound));
                }

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }
        }
        /// <summary>
        /// In order to allow a user to store multiple bank accounts,
        /// we create a 'customer' for each account. This will create the
        /// customer and store the bank account information.
        /// </summary>
        /// <param name="bank"></param>
        /// <returns>The UserBank. If it is a new entry, the object will be 
        /// returned with the Alias created for the bank account.</returns>
        public UserBank UpdateCustomerBank(UserBank bank)
        {
            //if they haven't stored this account before,
            //create a customer
            if(!bank.PayerAlias.HasValue)
            {
                string addressLine = string.Format("{0} {1}", bank.Address1, bank.Address2);

                var customer = new ModpayCustomer()
                {
                    AccountReference = bank.UserId.ToString(),
                    Address = addressLine,
                    City = bank.City,
                    PayerAlias = bank.PayerAlias,
                    FirstName = bank.FirstName,
                    LastName = bank.LastName,
                    Phone = bank.Phone,
                    Email = bank.Email,
                    State = bank.State,
                    Zip = bank.Zip
                };

                //store the customer info
                customer.PayerAlias = CreatePayerCustomer(customer);
                bank.PayerAlias = customer.PayerAlias;
            }

            //and then store the payer bank account
            modClient.ModifyCustomerBankAcct(
                this.clientId, this.clientCode, bank.PayerAlias.Value,
                bank.AccountName, bank.RoutingNumber, bank.AccountNumber,
                bank.AccountType);

            //also create or modify the payee account, if they don't have one.
            if(!bank.PayeeAlias.HasValue)
                bank.PayeeAlias = CreatePayeeCustomer(bank);
            else
                UpdatePayeeCustomer(bank);

            //mask account info
            bank.AccountNumber = this.MaskNumber(bank.AccountNumber);
            bank.RoutingNumber = this.MaskNumber(bank.RoutingNumber);

            return bank;
        }
        /// <summary>
        /// Creates a customer profile for the user. Note: set
        /// the customer's AccountReference to their UserId; this is an
        /// optional field we can use for reference.
        /// </summary>
        /// <param name="bank"></param>
        /// <returns>A long representing the customer's unique id. Store this as
        /// the user's Alias.</returns>
        long CreatePayeeCustomer(UserBank bank)
        {
            var accType = bank.AccountType == "Checking" ? "1" : "2";

            string addressLine = string.Format("{0} {1}", bank.Address1, bank.Address2);

            var payeeAlias = payClient.CreatePayforwardPayee(
                this.clientId, this.clientCode, bank.UserId.ToString(),
                bank.FirstName, bank.LastName, "", addressLine,
                bank.City, bank.State, bank.Zip,
                "USA", bank.Phone, "",
                bank.Email, bank.RoutingNumber, bank.AccountNumber, bank.AccountName, accType);

            return payeeAlias;
        }
        /// <summary>
        /// Updates a Payforward (payee) customer profile for the user.
        /// </summary>
        /// <param name="bank"></param>
        /// <returns></returns>
        void UpdatePayeeCustomer(UserBank bank)
        {
            string addressLine = string.Format("{0} {1}", bank.Address1, bank.Address2);

            var payeeAlias = payClient.ModifyPayee(
                this.clientId, this.clientCode, bank.UserId.ToString(), bank.PayeeAlias.Value,
                bank.FirstName, bank.LastName, "", addressLine,
                bank.City, bank.State, bank.Zip,
                "USA", bank.Phone, "",
                bank.Email, bank.RoutingNumber, bank.AccountNumber, bank.AccountName, bank.AccountType);
        }