Example #1
0
        public JsonResult SetVender(VendModel argModel)
        {
            try
            {
                int resultInt = 0;

                if (argModel.vend_idx == null)
                {
                    argModel.create_us = Convert.ToInt32(Session["USER_IDX"]);

                    resultInt         = (int)Mapper.Instance().Insert("User.insVender", argModel);
                    argModel.vend_idx = resultInt;
                    LogCtrl.SetLog(argModel, eActionType.DataInsert, this.HttpContext, argModel.vend_nm);
                }
                else
                {
                    resultInt = Mapper.Instance().Update("User.udtVender", argModel);
                    LogCtrl.SetLog(argModel, eActionType.DataUpdate, this.HttpContext, argModel.vend_nm);
                }

                return(Json(resultInt));
            }
            catch (Exception ex)
            {
                logger.Error(string.Format("ERROR : 협력사 저장"), ex);
                return(Json(new ResultJsonModel {
                    isError = true, resultMessage = ex.Message, resultDescription = ex.ToString()
                }));
            }
        }
Example #2
0
 public JsonResult GetVendList(VendModel searchModel)
 {
     try
     {
         var deptList = Mapper.Instance().QueryForList <VendModel>("User.selVender", searchModel);
         return(Json(deptList));
     }
     catch (Exception ex)
     {
         logger.Error(string.Format("ERROR : 협력업체 정보"), ex);
         return(Json(new ResultJsonModel {
             isError = true, resultMessage = ex.Message, resultDescription = ex.ToString()
         }));
     }
 }
Example #3
0
        public PartialViewResult EditVender(VendModel searchModel)
        {
            VendModel retModel = null;

            if (searchModel.vend_idx != null)
            {
                retModel = Mapper.Instance().QueryForObject <VendModel>("User.selVender", searchModel);
            }
            else
            {
                retModel = searchModel;
            }

            return(PartialView("Dialog/dlgEditVend", retModel));
        }
        public async Task <IActionResult> VendMeter(int id, VendModel model)
        {
            //var transaction = db.Transaction.Where(t => t.Id == id).FirstOrDefault();
            string vendor_code       = _configuration["Irecharge:VendorCode"];
            string pubkey            = _configuration["Irecharge:PublicKey"];
            string privKey           = _configuration["Irecharge:PrivateKey"];
            string baseUri_VendPower = _configuration["Irecharge:VendPowerURL"];

            if (model.TransactionId != id)
            {
                return(BadRequest("Invalid Transaction"));
            }

            //get existing data from DB
            var transact = _db.Transaction.Where(t => t.Id == model.TransactionId).FirstOrDefault();

            //get user details
            var username = HttpContext.User.Identity.Name;
            var user     = _userManager.FindByEmailAsync(username).Result;

            if (user.MainBalance <= Convert.ToDecimal(transact.Amount))
            {
                return(Ok("Insufficient Balance"));
            }


            string disco;
            int    serviceId = 0;

            if (model.Service == "KAEDC_Prepaid")
            {
                disco     = "Kaduna_Electricity_Disco";
                serviceId = 1;
            }
            else if (model.Service == "KAEDC_Postpaid")
            {
                disco     = "Kaduna_Electricity_Disco_Postpaid";
                serviceId = 2;
            }
            else
            {
                return(BadRequest("Invalid Service"));
            }

            string meter_number = transact.Meternumber;
            string ref_id       = transact.ApiUniqueReference;
            string access_token = transact.PhcnUnique;
            string amount       = Convert.ToString(transact.Amount);
            string phone        = transact.RecipientPhoneNumber;
            string email        = user.Email;

            string combinedstring = vendor_code + "|" + ref_id + "|" + meter_number + "|" + disco + "|" + amount + "|" + access_token + "|" + pubkey;

            byte[] key  = Encoding.ASCII.GetBytes(privKey);
            string hash = ExtraMethods.GenerateHash(combinedstring, key);

            try
            {
                WebClient webClient = new WebClient();
                webClient.QueryString.Add("vendor_code", vendor_code);
                webClient.QueryString.Add("meter", meter_number);
                webClient.QueryString.Add("reference_id", ref_id);
                webClient.QueryString.Add("response_format", "json");
                webClient.QueryString.Add("disco", disco);
                webClient.QueryString.Add("access_token", access_token);
                webClient.QueryString.Add("amount", amount);
                webClient.QueryString.Add("phone", phone);
                webClient.QueryString.Add("email", email);
                webClient.QueryString.Add("hash", hash);

                string response = webClient.DownloadString(baseUri_VendPower);

                var jsonresult = JsonConvert.DeserializeObject <iRechargeVendPower>(response);

                transact.PayerIp                = ExtraMethods.GetLocalIPAddress();
                transact.PaymentMethodId        = 1;
                transact.Statuscode             = Convert.ToInt32(jsonresult.status);
                transact.StatusMessage          = jsonresult.message;
                transact.ApiUniqueReference     = ref_id;
                transact.GatewayresponseMessage = response;
                transact.Token       = jsonresult.meter_token;
                transact.BrinqProfit = ExtraMethods.BrinqProfit(model.Amount, serviceId);
                transact.TopUpValue  = jsonresult.units;

                if (jsonresult.status != "00")
                {
                    transact.transactionsStatus = "pending";
                }
                else
                {
                    transact.transactionsStatus = "completed";
                    user.MainBalance            = user.MainBalance - Convert.ToDecimal(transact.Amount);
                    ExtraMethods.AddProfit(user, transact);
                    transact.AgentProfit = 0.005M * Convert.ToDecimal(transact.Amount);
                }

                //db.Entry(transaction).State = EntityState.Modified;
                _db.Update(transact);
                _db.SaveChanges();

                //return Ok(transact);
                return(Ok(new
                {
                    ID = transact.Id,
                    SERVICE = model.Service,
                    AMOUNT = transact.Amount,
                    METERNUMBER = transact.Meternumber,
                    METERNAME = transact.MeterName,
                    PAYER = transact.PayersName,
                    PHONENUMBER = transact.RecipientPhoneNumber,
                    STATUS = transact.transactionsStatus,
                    TOKEN = transact.Token,
                    DATE = transact.Datetime
                }));
            }
            catch (WebException ex)
            {
                if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null)
                {
                    var resp = (HttpWebResponse)ex.Response;
                    if (resp.StatusCode == HttpStatusCode.NotFound) // HTTP 404
                    {
                        return(Ok("Transaction could not be completed"));
                    }
                }

                throw;
            }
        }