public ActionResult CreateUpdateTransectionAccount(TransectionAccountModel transectionAccountModel)
        {
            if (!ModelState.IsValid)
            {
                return(ShowErrorMessage(GetModelErrors(ModelState)));
            }

            var isPayByUserExist = FarmManagementEntities.PersonalAccounts.Any(x => x.UserId == transectionAccountModel.PayByUserId);

            if (!isPayByUserExist)
            {
                return(ShowErrorMessage("Selected Pay By employee doesn't have personal account."));
            }

            var transectionAccount = new TransectionAccount();

            transectionAccount.Id          = transectionAccountModel.Id;
            transectionAccount.UserId      = transectionAccountModel.UserId;
            transectionAccount.PayByUserId = transectionAccountModel.PayByUserId;
            transectionAccount.Balance     = transectionAccountModel.Balance;
            transectionAccount.Date        = transectionAccountModel.Date;

            var userAccount = FarmManagementEntities.TransectionPersonalAccounts.Where(x => x.UserId == transectionAccountModel.UserId)
                              .OrderByDescending(x => x.InsertDate).First();
            var userPersonalAccount = new TransectionPersonalAccount();

            userPersonalAccount.Debit          = transectionAccountModel.Balance;
            userPersonalAccount.Balance        = userAccount.Balance - transectionAccountModel.Balance;
            userPersonalAccount.Date           = transectionAccountModel.Date;
            userPersonalAccount.InsertDate     = DateTime.Now;
            userPersonalAccount.IsAddedByAdmin = false;
            userPersonalAccount.UserId         = transectionAccountModel.UserId;
            FarmManagementEntities.TransectionPersonalAccounts.Add(userPersonalAccount);


            var payByUserAccount = FarmManagementEntities.TransectionPersonalAccounts.Where(x => x.UserId == transectionAccountModel.PayByUserId)
                                   .OrderByDescending(x => x.InsertDate).FirstOrDefault();
            var payByUserPersonalAccount = new TransectionPersonalAccount();

            payByUserPersonalAccount.Credit         = transectionAccountModel.Balance;
            payByUserPersonalAccount.Balance        = (payByUserAccount == null ? 0 : payByUserAccount.Balance) + transectionAccountModel.Balance;
            payByUserPersonalAccount.Date           = transectionAccountModel.Date;
            payByUserPersonalAccount.InsertDate     = DateTime.Now;
            payByUserPersonalAccount.UserId         = transectionAccountModel.PayByUserId;
            payByUserPersonalAccount.IsAddedByAdmin = false;
            FarmManagementEntities.TransectionPersonalAccounts.Add(payByUserPersonalAccount);

            if (transectionAccountModel.Id == 0)
            {
                transectionAccount.InsertDate = DateTime.Now;
                FarmManagementEntities.TransectionAccounts.Add(transectionAccount);
            }

            FarmManagementEntities.SaveChanges();

            var message = string.Format(Constant.SuccessMessage, transectionAccountModel.Id > 0 ? "updated" : "added");

            return(ShowSuccessMessage(message));
        }
        public ActionResult CreateUpdateTransectionAccount(Int32 id)
        {
            var transectionAccountModel = new TransectionAccountModel();

            transectionAccountModel.Date   = DateTime.Now;
            transectionAccountModel.UserId = LoggedInUser.UserId;
            transectionAccountModel.Name   = LoggedInUser.Name;

            return(PartialView("TransectionAccountPartial", transectionAccountModel));
        }