private void btnEditCard_Click(object sender, RoutedEventArgs e) { Card item = null; CardDetail cdDetail = null; if (this.dgCardCollection.SelectedItems.Count > 0) { item = (Card)this.dgCardCollection.SelectedItem; try { cdDetail = _cardManager.RetrieveCardDetail(item); var detailForm = new frmCardDetails(_cardManager, cdDetail, CardDetailMode.Edit); var results = detailForm.ShowDialog(); if (results == true) { refreshCardList(); dgCardCollection.ItemsSource = _cardList; } } catch (Exception ex) { MessageBox.Show(ex.Message + "\n\n" + ex.InnerException.Message, "Oh no..."); } } else { MessageBox.Show("Please select a card to edit."); } }
/** * use to handle transactions below $20 * <param name="cardDetail"></param> */ protected async Task <bool> CheapTransaction(CardDetail cardDetail) { try { switch (cardDetail) { case null: throw new Exception(); default: { if (cardDetail.Amount <= 20) { //some service run here return(true); } return(false); } } } catch (Exception e) { // logic of failed process Console.WriteLine(e); return(false); } }
public void PremiumTransaction_Above500_ReturnBool(CardDetail cardDetail) //[ValueSource("CCTestData")] { var cheap = PremiumTransaction(cardDetail).Result; Assert.Greater(cardDetail.Amount, 500, "Transaction is less than 500"); Assert.IsTrue(cheap, "Transaction failed"); }
public void ExpensiveTransaction_Above21AndBelow500_ReturnBool(CardDetail cardDetail) //[ValueSource("CCTestData")] { var cheap = ExpensiveTransaction(cardDetail).Result; Assert.IsTrue(cardDetail.Amount <= 500 && cardDetail.Amount >= 21, "Transaction is less or greater than 21 and 500"); Assert.IsTrue(cheap, "Transaction failed"); }
public void ProcessPaymentController_On_CardTransaction(CardDetail cardDetail) //[ValueSource("CCVerificationTestData")] { var responseResult = _paymentProcessController.ProcessPayment(cardDetail).Result; Assert.IsTrue(responseResult.Value, "Transaction failed"); }
public ActionResult Decline() { string id = Request.Form["id"]; string remarks = Request.Form["remarks"]; if (string.IsNullOrEmpty(remarks)) { remarks = "Declined"; } if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Request request = db.Requests.Find(id); if (request == null) { return(HttpNotFound()); } Transaction transaction = db.Transactions.Find(id); CardDetail card = db.CardDetails.FirstOrDefault(m => m.CardID == request.CardID); AspNetUser user = db.AspNetUsers.FirstOrDefault(m => m.UserName == request.UserName); if (transaction == null) { return(HttpNotFound()); } user.Balance += request.Amount; db.Requests.Remove(request); transaction.Status = 0;//Declined transaction.Remarks = remarks; db.Entry(transaction).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index", new { declinedMessage = "Request Declined", acceptMessage = "" })); }
public static CardDetail GetCardDetail(string cardNo) { string url = $"https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo={cardNo}&cardBinCheck=true"; try { string reval = HttpHelpers.GetString(url); //Utility.GetWebContent(url); CardDetail cardDetail; Dictionary <string, object> str = reval.Json(); if (bool.Parse(str["validated"].ToString())) { cardDetail = new CardDetail(str["validated"].ToVar <bool>(), cardNo, str["bank"].ToString(), Getownparentbanks(str["bank"].ToString()), GetCardDetailimg(str["bank"].ToString()), str["cardType"].ToString(), "验证成功!"); } else { cardDetail = new CardDetail(str["validated"].ToVar <bool>(), "您输入银行卡不正确!"); } return(cardDetail); } catch (Exception e) { throw new Exception("银行验证出现问题了,请联系管理员进行修缮。", e); }
/** 转换一行数据 */ protected override void transLine(string[] vRows) { CardDetail vSubNew; vSubNew = new CardDetail(); vSubNew.configData(vRows); _dic.Add(vSubNew.id, vSubNew); }
public void SortTest () { IChannel fakeIChannel = Isolate.Fake.Instance<IChannel>(); Card fakeCard1 = Isolate.Fake.Instance<Card>(); Isolate.WhenCalled(() => fakeCard1.Priority).WillReturn(3); Card fakeCard2 = Isolate.Fake.Instance<Card>(); Isolate.WhenCalled(() => fakeCard2.Priority).WillReturn(2); Card fakeCard3 = Isolate.Fake.Instance<Card>(); Isolate.WhenCalled(() => fakeCard3.Priority).WillReturn(1); var cardDetails = new List<CardDetail>(); var card = new CardDetail(1, fakeCard1, fakeIChannel, false, 0); cardDetails.Add(card); card = new CardDetail(2, fakeCard2, fakeIChannel, false, 0); cardDetails.Add(card); card = new CardDetail(3, fakeCard3, fakeIChannel, true, 1); cardDetails.Add(card); cardDetails.Sort(); List<CardDetail> freeCards = cardDetails.Where(t => t.NumberOfOtherUsers == 0 || (t.NumberOfOtherUsers > 0 && t.SameTransponder)).ToList(); List<CardDetail> availCards = cardDetails.Where(t => t.NumberOfOtherUsers > 0 && !t.SameTransponder).ToList(); }
public IHttpActionResult PutCardDetail(long id, CardDetail cardDetail) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != cardDetail.CardNumber) { return(BadRequest()); } db.Entry(cardDetail).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!CardDetailExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult PostCardDetail(CardDetail cardDetail) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } db.CardDetails.Add(cardDetail); try { db.SaveChanges(); } catch (DbUpdateException) { if (CardDetailExists(cardDetail.CardNumber)) { return(Conflict()); } else { throw; } } return(CreatedAtRoute("DefaultApi", new { id = cardDetail.CardNumber }, cardDetail)); }
public ActionResult Accept(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Request request = db.Requests.Find(id); if (request == null) { return(HttpNotFound()); } Transaction transaction = db.Transactions.Find(id); if (transaction == null) { return(HttpNotFound()); } //AspNetUser user = db.AspNetUsers.FirstOrDefault(m => m.UserName == request.UserName); CardDetail card = db.CardDetails.FirstOrDefault(m => m.CardID == request.CardID); card.Balance += request.Amount; transaction.Status = 1;//Accepted transaction.Remarks = "Accepted"; db.Entry(transaction).State = EntityState.Modified; db.Requests.Remove(request); db.SaveChanges(); return(RedirectToAction("Index", new { acceptMessage = "Request Accepted", declinedMessage = "" })); }
public void SaveCardDetails(CardDetail cardDet) { var query = $@" INSERT INTO [dbo].[CardDetails](CardNumber, AccountBalance, BankCode, CurrencyCode, CardStatus, CardClassification) VALUES ('{cardDet.CardNumber}', {cardDet.AccountBalance.ToString("F").Replace(',', '.')}, {(int)cardDet.BankCode}, {(int)cardDet.Currency}, {(int)cardDet.CardStatus}, {(int)cardDet.CardClass})"; using (var conn = getConnection()) { if (isConnectionValid(conn)) { try { using (var command = new SqlCommand()) { command.CommandText = query; command.CommandType = CommandType.Text; command.Connection = conn; conn.Open(); command.ExecuteNonQuery(); } } catch (Exception ex) { throw new ExceptionLogger(this.logger, "Could not sve the Bank Account.", ex); } finally { conn.Close(); } } } }
public HttpResponseMessage Approved(string Email) { try { using (project1Entities db = new project1Entities()) { UserTable user = db.UserTables.Find(Email); CardType type = db.CardTypes.Find(user.CardType); Random rnd = new Random(); if (user == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, "User with Email " + Email + "not found")); } DateTime d1 = DateTime.Now; user.validation = "Approved"; CardDetail card = new CardDetail(); card.Type = user.CardType; card.Email = user.Email; card.CurrentLimit = type.Limit; card.ValidFrom = d1; card.ValidTill = d1.AddYears(4); card.CVV = rnd.Next(101, 999); db.CardDetails.Add(card); db.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Created, user)); } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex)); } }
// edit mode public frmCardDetails(ICardManager cdMgr, CardDetail cdDetail, CardDetailMode mode) { _cardManager = cdMgr; _cardDetail = cdDetail; _mode = mode; InitializeComponent(); }
public void Post([FromBody] Purchase pur) { FinanceEntities db = new FinanceEntities(); PurchaseDetail p = new PurchaseDetail(); p.ProductID = pur.id; p.CardID = (from c in db.CardDetails join u in db.Users on c.CustomerID equals u.CustomerID where u.Username == pur.username select c.CardID).FirstOrDefault(); p.PurchaseDate = DateTime.Now; p.CustomerID = (from u in db.Users where u.Username == pur.username select u.CustomerID).FirstOrDefault(); p.EmiScheme = pur.scheme; p.EmiPerMonth = pur.amount / pur.scheme; p.EmiPaid = 0; p.EmiLeft = pur.amount; p.PaidForMonth = "NO"; db.PurchaseDetails.Add(p); db.SaveChanges(); CardDetail query = (from c in db.CardDetails where c.CustomerID == p.CustomerID select c).FirstOrDefault(); query.RemainingCredit = query.RemainingCredit - pur.amount; db.Entry(query).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); }
private async Task DeleteCard(int id) { //get card to remove from queryable list of cards CardDetail SelectedCard = Cards.Where(x => x.Id == id).FirstOrDefault(); Cards.Remove(SelectedCard); //remove card //Get cards from saved list List <string> Cardslst = new List <string>(); foreach (var item in Cards) //add cards back with updated card { string cardstring = string.Format("{0}*{1}*{2}*{3}", item.Bank, item.CardNo, item.Expiry, item.CVV); Cardslst.Add(cardstring); } if (Cardslst.Count() > 0) { ApplicationData.Current.LocalSettings.Values["Cards"] = Cardslst.ToArray(); //save changes } else { ApplicationData.Current.LocalSettings.Values.Remove("Cards"); HasCard = false; } await UIHelper.ShowAlert(res.GetString("CardRemoved")); }
public MallStatusResponse(string buyOrder, CardDetail cardDetail, string accountingDate, string transactionDate) { BuyOrder = buyOrder; CardDetail = cardDetail; AccountingDate = accountingDate; TransactionDate = transactionDate; }
public async Task <ActionResult <bool> > ProcessPayment(CardDetail cardDetail) { try { if (cardDetail == null) { throw new Exception(); } var paymentStatus = new PaymentState(); paymentStatus.StateEnum = PaymentStateEnum.Pending; _context.PaymentState.Add(paymentStatus); await _context.SaveChangesAsync(); var isProcessed = await _paymentGatewayRepo.ProcessTransaction(cardDetail, paymentStatus); if (isProcessed) { return(Ok("Payment is processed")); } return(BadRequest(new { message = "The request is invalid" })); } catch (Exception e) { return(StatusCode(500, new { error = e.Message, message = "Lost connection to payment platform, Please try back later" })); } }
public void CheapTransaction_Below20_ReturnBool(CardDetail cardDetail) //[ValueSource("CCTestData")] { var cheap = CheapTransaction(cardDetail).Result; Assert.LessOrEqual(cardDetail.Amount, 20, "Transaction is greater than 20"); Assert.IsTrue(cheap, "Transaction failed"); }
public IHttpActionResult PostRequest(Request request) { string userName = RequestContext.Principal.Identity.GetUserName(); AspNetUser user = db.AspNetUsers.FirstOrDefault(u => u.UserName == userName); CardDetail card = db.CardDetails.FirstOrDefault(c => c.CardID == request.CardID); if (user == null) { return(BadRequest("User doesnt exists, Please Logout and try again")); } if (card == null) { return(BadRequest("This card is not registered in the System, Please contact the Administrator")); } if (request.UserName != user.UserName) { return(BadRequest("This card does not belong to the user")); } if (user.Balance < request.Amount) { return(BadRequest("The user does not have sufficient balance!")); } request.UserName = userName; request.Name = user.Name; request.RequestID = Guid.NewGuid().ToString(); request.TimeStamp = DateTime.Now; Transaction transaction = new Transaction() { TransactionID = request.RequestID, TimeStamp = request.TimeStamp, Username = request.UserName, CardID = request.CardID, CardType = request.CardType, Amount = request.Amount, Status = 2,//Pending transaction Remarks = "Pending", Type = "Credit", VehicleNumber = card.VehicleNumber }; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } user.Balance -= request.Amount; db.Requests.Add(request); db.Transactions.Add(transaction); try { db.SaveChanges(); } catch (DbUpdateException) { BadRequest("Could not process request..Please try again later"); } RequestResponse response = new RequestResponse(request); response.Balance = user.Balance; return(CreatedAtRoute("DefaultApi", new { id = request.RequestID }, response)); }
public static CardDetailModel GetCardDetailModel(CardDetail cardDetail, Language language) { return(new CardDetailModel() { CardDetailId = cardDetail.CardDetailId, CardId = cardDetail.CardId, Language = new LanguageModel() { LanguageId = language.LanguageId, Name = language.Name, Code = language.Code, FlagImagePath = language.FlagImagePath, CreatedById = language.CreatedById, CreatedDate = language.CreatedDate, UpdatedById = language.UpdatedById, UpdatedDate = language.UpdatedDate, Deleted = language.Deleted, }, Name = cardDetail.Name, Text = cardDetail.Text, Effect = cardDetail.Effect, Reward = cardDetail.Reward, ToSolve = cardDetail.ToSolve, FlavorText = cardDetail.FlavorText, Illustrator = cardDetail.Illustrator, Copyright = cardDetail.Copyright, Note = cardDetail.Note, Orientation = cardDetail.Orientation, CreatedById = cardDetail.CreatedById, CreatedDate = cardDetail.CreatedDate, UpdatedById = cardDetail.UpdatedById, UpdatedDate = cardDetail.UpdatedDate, Deleted = cardDetail.Deleted, }); }
public HttpResponseMessage financeup(int id) { try { using (project1Entities db = new project1Entities()) { var data = db.Finances.Find(id); CardDetail card = db.CardDetails.Where(x => x.Email == data.Email).FirstOrDefault(); if (data == null) { return(Request.CreateResponse(HttpStatusCode.NotFound, "Purchase with finance id " + id + " not found")); } else { data.Months = data.Months - 1; //data.EmiAmount = finance.EmiAmount; //data.TotalAmount = finance.TotalAmount; data.RemainingAmount = data.RemainingAmount - data.EmiAmount; //data.purchaseDate = finance.purchaseDate; //data.ProductID = finance.ProductID; data.LastPaymentDate = DateTime.Now; card.CurrentLimit = card.CurrentLimit + data.EmiAmount; db.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, data)); } } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message)); } }
public void SortTest() { IChannel fakeIChannel = Isolate.Fake.Instance <IChannel>(); Card fakeCard1 = Isolate.Fake.Instance <Card>(); Isolate.WhenCalled(() => fakeCard1.Priority).WillReturn(3); Card fakeCard2 = Isolate.Fake.Instance <Card>(); Isolate.WhenCalled(() => fakeCard2.Priority).WillReturn(2); Card fakeCard3 = Isolate.Fake.Instance <Card>(); Isolate.WhenCalled(() => fakeCard3.Priority).WillReturn(1); var cardDetails = new List <CardDetail>(); var card = new CardDetail(1, fakeCard1, fakeIChannel, false, 0); cardDetails.Add(card); card = new CardDetail(2, fakeCard2, fakeIChannel, false, 0); cardDetails.Add(card); card = new CardDetail(3, fakeCard3, fakeIChannel, true, 1); cardDetails.Add(card); cardDetails.Sort(); List <CardDetail> freeCards = cardDetails.Where(t => t.NumberOfOtherUsers == 0 || (t.NumberOfOtherUsers > 0 && t.SameTransponder)).ToList(); List <CardDetail> availCards = cardDetails.Where(t => t.NumberOfOtherUsers > 0 && !t.SameTransponder).ToList(); }
public ActionResult Index(AtmCardModel model) { try { if (ModelState.IsValid) { CardDetail _atmCardDetails = model.GetCardDetail(model.CardNumber); if (_atmCardDetails != null && _atmCardDetails.IsActivated) { TempData["Name"] = model.CardNumber; return(RedirectToAction("Dashboard", "Dashboard")); } else if (_atmCardDetails != null && !_atmCardDetails.IsActivated) { //first time registration //to do... } else { return(View()); } } return(View()); } catch { return(View()); } }
public async Task <ActionResult <CardDetail> > PostCardDetail(CardDetail cardDetail) { _context.CardDetails.Add(cardDetail); await _context.SaveChangesAsync(); return(CreatedAtAction("GetCardDetail", new { id = cardDetail.CardDetailId }, cardDetail)); }
public async Task <IActionResult> PutCardDetail(int id, CardDetail cardDetail) { if (id != cardDetail.CardDetailId) { return(BadRequest()); } _context.Entry(cardDetail).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CardDetailExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public CardDetail GetCardbyId(string CardId) { int Id = Convert.ToInt32(CardId); CardDetail objCard = new CardDetail(); objCard = objEntity.CardDetails.Find(Id); return(objCard); }
public ActionResult DeleteConfirmed(string id) { CardDetail carddetail = db.CardDetails.Find(id); db.CardDetails.Remove(carddetail); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Create(CardDetail carddetail) { if (String.IsNullOrEmpty(carddetail.UserName)) { ModelState.AddModelError("UserName", "User cannot be empty!"); } AspNetUser user = db.AspNetUsers.FirstOrDefault(u => u.UserName == carddetail.UserName); if (user == null) { ModelState.AddModelError("UserName", "User not found!"); } if (String.IsNullOrEmpty(carddetail.CardID)) { ModelState.AddModelError("CardID", "This field cannot be empty!"); } CardDetail card = db.CardDetails.Find(carddetail.CardID); if (card != null) { ModelState.AddModelError("CardID", "Duplicate CardID, Please provide a unique cardID"); } if (String.IsNullOrEmpty(carddetail.Balance.ToString())) { ModelState.AddModelError("Balance", "This field cannot be empty!"); } if (String.IsNullOrEmpty(carddetail.CardType)) { ModelState.AddModelError("CardType", "This field cannot be empty!"); } if (String.IsNullOrEmpty(carddetail.ExpiryDate.ToString())) { ModelState.AddModelError("ExpiryDate", "This field cannot be empty!"); } if (String.IsNullOrEmpty(carddetail.VehicleNumber)) { ModelState.AddModelError("VehicleNumber", "This field cannot be empty!"); } if (ModelState.IsValid) { string message; carddetail.CardType = carddetail.CardType.ToUpper(); carddetail.Name = user.Name; try { db.CardDetails.Add(carddetail); db.SaveChanges(); message = "Card created succesfully!"; } catch (Exception) { message = "Something went wrong..unable to connect to database"; } return(RedirectToAction("Create", new { message = message })); } return(View()); }
public void CheatBai() { MessageSending _messageSending = new MessageSending(CMD_REALTIME.C_GAMEPLAY_ADMIN_CHEAT); for (int i = 0; i < cheatCard_Global.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Global[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } for (int i = 0; i < cheatCard_Player_00.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Player_00[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } for (int i = 0; i < cheatCard_Player_01.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Player_01[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } for (int i = 0; i < cheatCard_Player_02.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Player_02[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } for (int i = 0; i < cheatCard_Player_03.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Player_03[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } for (int i = 0; i < cheatCard_Player_04.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Player_04[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } for (int i = 0; i < cheatCard_Player_05.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Player_05[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } for (int i = 0; i < cheatCard_Player_06.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Player_06[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } for (int i = 0; i < cheatCard_Player_07.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Player_07[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } for (int i = 0; i < cheatCard_Player_08.Count; i++) { CardDetail _cardDetail = GetCardDetail(cheatCard_Player_08[i]); _messageSending.writeByte((byte)_cardDetail.cardId); } NetworkGlobal.instance.SendMessageRealTime(_messageSending); }
public void TestTransponderSorting() { IChannel fakeIChannel = Isolate.Fake.Instance<IChannel>(); Card fakeCard = Isolate.Fake.Instance<Card>(); CardDetail c1 = new CardDetail(1, CreateCardMock(1), fakeIChannel, true, 0); CardDetail c2 = new CardDetail(2, CreateCardMock(1), fakeIChannel, false, 0); Assert.AreEqual(0, c1.CompareTo(c1)); Assert.AreEqual(-1, c1.CompareTo(c2)); Assert.AreEqual(1, c2.CompareTo(c1)); Assert.AreEqual(0, c2.CompareTo(c2)); }
public static CardDetail CreateCardDetail(string card_num, decimal balance, int cvv, global::System.DateTime expiration_dt, string card_name, string card_type) { CardDetail cardDetail = new CardDetail(); cardDetail.card_num = card_num; cardDetail.balance = balance; cardDetail.cvv = cvv; cardDetail.expiration_dt = expiration_dt; cardDetail.card_name = card_name; cardDetail.card_type = card_type; return cardDetail; }
private void LogNumberOfOtherUsersFound(CardDetail cardDetail) { if (LogEnabled && cardDetail.Card.IdCard > 0) { var tvController = _controller as TVController; if (tvController != null) { ITvCardHandler card = tvController.CardCollection[cardDetail.Card.IdCard]; Log.Info("Controller: card:{0} type:{1} users: {2}", cardDetail.Card.IdCard, card.Type, cardDetail.NumberOfOtherUsers); } } }
public void TestPrioritySorting() { IChannel fakeIChannel = Isolate.Fake.Instance<IChannel>(); Card fakeCard = Isolate.Fake.Instance<Card>(); CardDetail c1 = new CardDetail(1, CreateCardMock(3), fakeIChannel, true, 0); CardDetail c2 = new CardDetail(2, CreateCardMock(2), fakeIChannel, true, 0); CardDetail c3 = new CardDetail(3, CreateCardMock(1), fakeIChannel, true, 0); Assert.AreEqual(0, c1.CompareTo(c1)); Assert.AreEqual(-1, c1.CompareTo(c2)); Assert.AreEqual(-1, c1.CompareTo(c3)); Assert.AreEqual(1, c2.CompareTo(c1)); Assert.AreEqual(0, c2.CompareTo(c2)); Assert.AreEqual(-1, c2.CompareTo(c3)); Assert.AreEqual(1, c3.CompareTo(c1)); Assert.AreEqual(1, c3.CompareTo(c2)); Assert.AreEqual(0, c3.CompareTo(c3)); }
public void TestNumberOfUsersSortingWhenNotSameTransponderSorting() { IChannel fakeIChannel = Isolate.Fake.Instance<IChannel>(); Card fakeCard = Isolate.Fake.Instance<Card>(); CardDetail c1 = new CardDetail(1, CreateCardMock(1), fakeIChannel, false, 0); CardDetail c2 = new CardDetail(2, CreateCardMock(1), fakeIChannel, false, 1); CardDetail c3 = new CardDetail(2, CreateCardMock(1), fakeIChannel, false, 2); Assert.AreEqual(0, c1.CompareTo(c1)); Assert.AreEqual(-1, c1.CompareTo(c2)); Assert.AreEqual(-1, c1.CompareTo(c3)); Assert.AreEqual(1, c2.CompareTo(c1)); Assert.AreEqual(0, c2.CompareTo(c2)); Assert.AreEqual(-1, c2.CompareTo(c3)); Assert.AreEqual(1, c3.CompareTo(c1)); Assert.AreEqual(1, c3.CompareTo(c2)); Assert.AreEqual(0, c3.CompareTo(c3)); }
/// <summary> /// 设置卡牌数据 /// </summary> /// <param name="vCardDetail"></param> public void SetCardDetail(CardDetail vCardDetail) { this.cardDetail = vCardDetail; }
public void SetCard(CardDetail vCard) { this.card = vCard; }
private static void CancelMissingCardReservation(IEnumerable<CardDetail> freeCards, CardDetail cardDetailForReservation, ICollection<ICardTuneReservationTicket> tickets, IDictionary<int, ITvCardHandler> cards) { int idcard = cardDetailForReservation.Card.IdCard; if (freeCards != null && !freeCards.Any(t => t.Card.IdCard == idcard)) { CancelCardReservationAndRemoveTicket(cards[idcard], tickets); } }
private bool SetupAndStartRecord(RecordingDetail recDetail, ref IUser user, CardDetail cardInfo, ICardTuneReservationTicket ticket, CardReservationRec cardResImpl) { bool result = false; if (cardInfo != null) { user.CardId = cardInfo.Id; StartRecordingNotification(recDetail); SetupRecordingFolder(cardInfo); if (StartRecordingOnDisc(recDetail, ref user, cardInfo, ticket, cardResImpl)) { CreateRecording(recDetail); try { recDetail.User.CardId = user.CardId; SetRecordingProgramState(recDetail); _recordingsInProgressList.Add(recDetail); RecordingStartedNotification(recDetail); SetupQualityControl(recDetail); WriteMatroskaFile(recDetail); } catch (Exception ex) { //consume exception, since it isn't catastrophic Log.Write(ex); } Log.Write("Scheduler: recList: count: {0} add scheduleid: {1} card: {2}", _recordingsInProgressList.Count, recDetail.Schedule.IdSchedule, recDetail.CardInfo.Card.Name); result = true; } } else { Log.Write("scheduler: no card found to record on."); } return result; }
public static void CancelCardReservationAndRemoveTicket(CardDetail cardDetail, IDictionary<CardDetail, ICardTuneReservationTicket> tickets, IDictionary<int, ITvCardHandler> cards) { if (cardDetail != null && tickets != null) { ICardTuneReservationTicket ticket; bool hasTicket = tickets.TryGetValue(cardDetail, out ticket); if (hasTicket) { tickets.Remove(cardDetail); ITvCardHandler cardHandler = cards[cardDetail.Id]; CancelCardReservation(cardHandler, ticket); } } }
private bool StartRecordingOnDisc(RecordingDetail recDetail, ref IUser user, CardDetail cardInfo, ICardTuneReservationTicket ticket, CardReservationRec cardResImpl) { bool startRecordingOnDisc = false; _tvController.EpgGrabberEnabled = false; Log.Write("Scheduler : record, first tune to channel"); cardResImpl.CardInfo = cardInfo; cardResImpl.RecDetail = recDetail; TvResult tuneResult = _tvController.Tune(ref user, cardInfo.TuningDetail, recDetail.Channel.IdChannel, ticket, cardResImpl); startRecordingOnDisc = (tuneResult == TvResult.Succeeded); return startRecordingOnDisc; }
private void SetupRecordingFolder(CardDetail cardInfo) { if (cardInfo.Card.RecordingFolder == String.Empty) cardInfo.Card.RecordingFolder = String.Format(@"{0}\Team MediaPortal\MediaPortal TV Server\recordings", Environment.GetFolderPath( Environment.SpecialFolder.CommonApplicationData)); if (cardInfo.Card.TimeShiftFolder == String.Empty) cardInfo.Card.TimeShiftFolder = String.Format(@"{0}\Team MediaPortal\MediaPortal TV Server\timeshiftbuffer", Environment.GetFolderPath( Environment.SpecialFolder.CommonApplicationData)); }
private void KickUserOnSameTransponder(CardDetail cardDetail, ICardTuneReservationTicket ticket, ref CardDetail cardInfo) { bool canKickAllUsersOnTransponder = CanKickAllUsersOnTransponder(ticket); if (canKickAllUsersOnTransponder) { for (int i = 0; i < ticket.TimeshiftingUsers.Count; i++) { IUser timeshiftingUser = ticket.TimeshiftingUsers[i]; Log.Write( "Scheduler : card is tuned to the same transponder but not free. record on card:{0} priority:{1}, kicking user:{2}", cardDetail.Id, cardDetail.Card.Priority, timeshiftingUser.Name); _tvController.StopTimeShifting(ref timeshiftingUser, TvStoppedReason.RecordingStarted); cardInfo = cardDetail; break; } } }
private void KickAllUsersOnTransponder(CardDetail cardDetail, ICardTuneReservationTicket ticket) { Log.Write( "Scheduler : card is not tuned to the same transponder and not recording, kicking all users. record on card:{0} priority:{1}", cardDetail.Id, cardDetail.Card.Priority); for (int i = 0; i < ticket.TimeshiftingUsers.Count; i++ ) { IUser timeshiftingUser = ticket.TimeshiftingUsers[i]; Log.Write( "Scheduler : kicking user:{0}", timeshiftingUser.Name); _tvController.StopTimeShifting(ref timeshiftingUser, TvStoppedReason.RecordingStarted); Log.Write( "Scheduler : card is tuned to the same transponder but not free. record on card:{0} priority:{1}, kicking user:{2}", cardDetail.Id, cardDetail.Card.Priority, timeshiftingUser.Name); } }
/// <summary> /// Gets a list of all available cards which can receive the channel specified /// List is sorted. /// </summary> /// <returns>list containg all cards which can receive the channel</returns> public List<CardDetail> GetAvailableCardsForChannel(IDictionary<int, ITvCardHandler> cards, Channel dbChannel, ref IUser user, out IDictionary<int, TvResult> cardsUnAvailable) { Stopwatch stopwatch = Stopwatch.StartNew(); cardsUnAvailable = new Dictionary<int, TvResult>(); try { //Log.Info("GetFreeCardsForChannel st {0}", Environment.StackTrace); //construct list of all cards we can use to tune to the new channel var cardsAvailable = new List<CardDetail>(); if (LogEnabled) { Log.Info("Controller: find card for channel {0}", dbChannel.DisplayName); } //get the tuning details for the channel ICollection<IChannel> tuningDetails = CardAllocationCache.GetTuningDetailsByChannelId(dbChannel);// _businessLayer.GetTuningChannelsByDbChannel(dbChannel); bool isValidTuningDetails = IsValidTuningDetails(tuningDetails); if (!isValidTuningDetails) { //no tuning details?? if (LogEnabled) { Log.Info("Controller: No tuning details for channel:{0}", dbChannel.DisplayName); } return cardsAvailable; } if (LogEnabled) { Log.Info("Controller: got {0} tuning details for {1}", tuningDetails.Count, dbChannel.DisplayName); } int number = 0; ICollection<ITvCardHandler> cardHandlers = cards.Values; foreach (IChannel tuningDetail in tuningDetails) { cardsUnAvailable.Clear(); number++; if (LogEnabled) { Log.Info("Controller: channel #{0} {1} ", number, tuningDetail.ToString()); } foreach (ITvCardHandler cardHandler in cardHandlers) { int cardId = cardHandler.DataBaseCard.IdCard; if (cardsUnAvailable.ContainsKey(cardId)) { if (LogEnabled) { Log.Info("Controller: card:{0} has already been queried, skipping.", cardId); } continue; } if (!CanCardTuneChannel(cardHandler, dbChannel, tuningDetail)) { AddCardUnAvailable(ref cardsUnAvailable, cardId, TvResult.ChannelNotMappedToAnyCard); continue; } if (!CanCardDecodeChannel(cardHandler, tuningDetail)) { AddCardUnAvailable(ref cardsUnAvailable, cardId, TvResult.ChannelIsScrambled); continue; } //ok card could be used to tune to this channel bool isSameTransponder = IsSameTransponder(cardHandler, tuningDetail); if (LogEnabled) { Log.Info("Controller: card:{0} type:{1} can tune to channel", cardId, cardHandler.Type); } int nrOfOtherUsers = NumberOfOtherUsersOnCurrentCard(cardHandler, user); long? channelTimeshiftingOnOtherMux; var cardInfo = new CardDetail(cardId, cardHandler.DataBaseCard, tuningDetail, isSameTransponder, nrOfOtherUsers); cardsAvailable.Add(cardInfo); } } //sort cards cardsAvailable.SortStable(); if (LogEnabled) { Log.Info("Controller: found {0} card(s) for channel", cardsAvailable.Count); } return cardsAvailable; } catch (Exception ex) { Log.Write(ex); return null; } finally { stopwatch.Stop(); Log.Info("AdvancedCardAllocation.GetAvailableCardsForChannel took {0} msec", stopwatch.ElapsedMilliseconds); } }
private static void UpdateCardsIterated(ICollection<CardDetail> freeCardsIterated, CardDetail card) { if (!freeCardsIterated.Contains(card)) { freeCardsIterated.Add(card); } }
public static ICardTuneReservationTicket RequestCardReservation(IUser user, CardDetail cardDetail, TVController tvController, ICardReservation cardResImpl, int idChannel) { ICardTuneReservationTicket ticket = null; int idCard = cardDetail.Card.IdCard; IUser userCopy = user.Clone() as User; if (userCopy != null) { IDictionary<int, ITvCardHandler> cards = tvController.CardCollection; userCopy.CardId = idCard; ITvCardHandler tvcard = cards[idCard]; ticket = cardResImpl.RequestCardTuneReservation(tvcard, cardDetail.TuningDetail, userCopy, idChannel); } return ticket; }
public void AddToCardDetails(CardDetail cardDetail) { base.AddObject("CardDetails", cardDetail); }
public void SetUI(CardDetail vCard) { this.card = vCard; this.SetUI(); }
private static ICardTuneReservationTicket GetTicketByCardDetail(CardDetail cardInfo, IDictionary<CardDetail, ICardTuneReservationTicket> tickets) { ICardTuneReservationTicket ticket; tickets.TryGetValue(cardInfo, out ticket); return ticket; }