//public string GenerateRandom() //{ // Random generator = new Random(); // String r = generator.Next(100000, 999999).ToString("D6"); // return r; //} public int SaveData() { int rc, count4 = 0; CashCard cashCard = new CashCard(); CashCard[] cashCards = CashCard.GetCashCards(new CashCardParameters { SerialNumber = SerialNUM }, out rc); if (cashCards.Length == 0) { count4 = 1; } else { cashCard = cashCards[0]; } CashCard[] cashCards1 = CashCard.GetCashCards(new CashCardParameters { }, out rc); int result = 0; int count = 0, count2 = 0, count3 = 1; Meter[] meters = Meter.GetMeters(new MeterParameters { Meterid = MeterId }, out rc); //user for meter Customer customer = new Customer(meters[0].UserId.Value); //cardid for meter user foreach (CashCard cashCard1 in cashCards1) //card exist { if (SerialNUM == cashCard1.SerialNumber && count4 == 0) { count3 = 0; } } if (cashCard.Id != customer.CardId && count3 == 0 && count4 == 0)//card not for meter { count2 = 1; } if (cashCard.Amount < Amount && count4 == 0) //not suffecient amount { count = 1; } if (count == 0 && count2 == 0 && count3 == 0 && count4 == 0) { //OTP = 0; ChargeDate = DateTime.Now; Status = "0"; using (SqlCommand cmd = new SqlCommand()) { cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = new SqlConnection(cstr.con); cmd.Connection.Open(); cmd.CommandText = "SaveTopupData"; if (MeterId != null) { cmd.Parameters.AddWithValue("meter_id", MeterId); } if (Amount != null) { cmd.Parameters.AddWithValue("amount", Amount); } if (SerialNUM != null) { cmd.Parameters.AddWithValue("card_serialnum", cashCard.SerialNumber); } // if (OTP != null) cmd.Parameters.AddWithValue("otp", OTP); if (ChargeDate != null) { cmd.Parameters.AddWithValue("chargeDate", ChargeDate); } if (ActivationDate != null) { cmd.Parameters.AddWithValue("activationDate", ActivationDate); } if (Status != null) { cmd.Parameters.AddWithValue("status", Status); } SqlParameter idParam = cmd.Parameters.Add("@id", SqlDbType.Int); idParam.Direction = ParameterDirection.InputOutput; idParam.Value = this.Id; SqlParameter otpParam = cmd.Parameters.Add("@otp", SqlDbType.Int); otpParam.Direction = ParameterDirection.InputOutput; SqlParameter resultParam = cmd.Parameters.Add("@result", SqlDbType.Int); resultParam.Direction = ParameterDirection.InputOutput; //try // { int c = cmd.ExecuteNonQuery(); //} //catch (Exception ex) //{ // return 0; //} this.Id = Convert.ToInt32(idParam.Value); this.OTP = Convert.ToInt32(otpParam.Value); result = Convert.ToInt32(resultParam.Value); cmd.Connection.Close(); } decimal? amount = cashCard.Amount - Amount; CashCard cash = new CashCard(cashCard.Id, amount, cashCard.SerialNumber); cash.SaveData(); } else if (count == 1)//un sufficient amount { result = Convert.ToInt32(cashCard.Amount); } else if (count3 == 0 && count2 == 1)//not for meter { result = 4; } else if (count4 == 1)//card not valid { result = 2; } return(result); }