public void Send(string client, string message, string connID) { while (true) { int pmtCount = db.PaymentTrailMessages.Where(v => v.CheckoutRequestID.Equals(message.Trim())).Count(); if (pmtCount > 1) { PaymentTrailMessage pmt = db.PaymentTrailMessages.Where(v => v.CheckoutRequestID.Equals(message.Trim())).OrderByDescending(v => v.OnlinePaymentTrailID).First(); if (pmt.ResponseCode != "0") { Clients.Client(connID).addNewMessageToPage(pmt.CustomerMessage, message.Trim(), pmt.ResponseCode); } else { ConfirmedPayment cpTime = db.ConfirmedPayments.Where(v => v.CheckoutRequestID.Equals(message.Trim())).First(); Clients.Client(connID).addNewMessageToPage(pmt.CustomerMessage, cpTime.ReceiptNumber, pmt.ResponseCode); } break; } else { } } }
public ActionResult Edit([Bind(Include = "BuildingID,LandRefNo,BuildingType,BuildingName,BuildingOwner,PaymentStatus,Arrears")] Building building, string payout) { oathAccount accYetu = new oathAccount(consumeKey, consumeSec); if (ModelState.IsValid) { db.Entry(building).State = EntityState.Modified; db.Entry(building).Property(uco => uco.BuildingAddress).IsModified = false; db.Entry(building).Property(uco => uco.BuildingFloors).IsModified = false; string val = payout; string annualAmount; //Get building owner number PersonTable payer = db.PersonTables.Where(v => v.PersonID.Equals(building.BuildingOwner)).First(); //send MPesa Request MPesaExpressRequest requestSend = new MPesaExpressRequest(); //Record DateTime DateTime wakati = DateTime.Now; string pwd = createPassword(bsc, pKey, wakati); var tf = requestSend.send(int.Parse(bsc), pwd, wakati, int.Parse(payout), payer.PhoneNumber, parB, "Express", "Building Payment", accYetu.Token, building); if (tf.Contains("errorCode")) { ErrorInfo ef = JsonConvert.DeserializeObject <ErrorInfo>(tf); PaymentTrailMessage ptm = new PaymentTrailMessage { ResponseCode = ef.errorCode, ResponseDescription = ef.errorMessage, CheckoutRequestID = ef.requestId, IDNumber = building.LandRefNo.ToString(), PaymentStamp = DateTime.Now }; db.PaymentTrailMessages.Add(ptm); return(RedirectToAction("Edit")); } else { TokenInfo x = JsonConvert.DeserializeObject <TokenInfo>(tf); //Insert Payment Trail Messages PaymentTrailMessage ptm = new PaymentTrailMessage { ResponseCode = x.ResponseCode.ToString(), ResponseDescription = x.ResponseDescription, CheckoutRequestID = x.CheckoutRequestID, MerchantRequestID = x.MerchantRequestID, CustomerMessage = x.CustomerMessage, IDNumber = building.LandRefNo.ToString(), PaymentStamp = DateTime.Now }; db.PaymentTrailMessages.Add(ptm); //Update DB db.SaveChanges(); TempData["CheckOutID"] = x.CheckoutRequestID; return(RedirectToAction("PaymentConfirmation", "Intermediate")); } } return(RedirectToAction("Edit")); }