public HttpResponseMessage DeleteConsumer(string id) { try { Consumer existingConsumer = financeEntities.Consumers.Find(id); if (existingConsumer == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Not Found")); } CompanyCard consumerCard = financeEntities.CompanyCards.Where(c => c.UserName == id).FirstOrDefault(); if (consumerCard == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Card Not Found")); } existingConsumer.IsOpen = false; consumerCard.IsOpen = false; financeEntities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Accepted, "Consumer Deleted Successfully")); } catch { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Consumer Could Not Be Deleted")); } }
public HttpResponseMessage VerifyConsumer(string id) { try { Consumer unverifiedConsumer = financeEntities.Consumers.Find(id); if (unverifiedConsumer == null) { return(Request.CreateResponse(HttpStatusCode.Forbidden, "Consumer Not Found To Be Verified")); } CompanyCard consumerCard = financeEntities.CompanyCards.Where(c => c.UserName == unverifiedConsumer.UserName).FirstOrDefault(); if (consumerCard == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Card Not Found")); } Card card = financeEntities.Cards.Where(c => c.CardTypeNo == unverifiedConsumer.CardTypeNo).FirstOrDefault(); if (card == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Card Not Found")); } var remainingBalance = consumerCard.Balance - card.JoiningFee; consumerCard.Balance = remainingBalance; unverifiedConsumer.IsPending = false; unverifiedConsumer.IsOpen = true; consumerCard.IsOpen = true; financeEntities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Accepted, "Consumer Verified Successfully")); } catch { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Consumer Could Not Be Verified")); } }
public HttpResponseMessage DeductEmi() { try { var currentDate = DateTime.Now; foreach (var tran in financeEntities.Transactions) { CompanyCard tranCard = financeEntities.CompanyCards.Where(c => c.UserName == tran.UserName).FirstOrDefault(); if (tranCard == null) { continue; } var dayDifference = (currentDate - tran.LastChecked).Days; bool isEmiDate = (currentDate - tran.PurchaseDate).Days % 30 == 0; if (tranCard.IsOpen && dayDifference > 0 && isEmiDate && tran.RemainingAmount > 0) { var currentRemainingAmount = tran.RemainingAmount - tran.EMIAmount; tran.RemainingAmount = currentRemainingAmount; var currentBalance = tranCard.Balance - tran.EMIAmount; tranCard.Balance = currentBalance; } tran.LastChecked = DateTime.Now; } financeEntities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.OK, "Operation Completed Successfully")); } catch { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Something Went Wrong")); } }
public ActionResult RegisterNow(UserCardVM apvm) { UserCard userCard = apvm.UserCard; CompanyCard companyCard = apvm.CompanyCard; userCard.Password = DantexCrypt.Crypt(userCard.Password); //sifreyi kriptoladık if (_usRep.Any(x => x.UserName == userCard.UserName)) { ViewBag.ZatenVar = "Kullanıcı ismi daha önce alınmıs"; return(View()); } else if (_usRep.Any(x => x.Email == userCard.Email)) { ViewBag.ZatenVar = "Email zaten kayıtlı"; return(View()); } //Kullanıcı basarılı bir şekilde register işlemini tamamladıysa ona mail gonder... string gonderilecekMail = "Tebrikler...Hesabınız olusturulmustur...Hesabınızı aktive etmek icin https://localhost:44392/Register/Activation/" + userCard.ActivationCode + " linkine tıklayabilirsiniz."; MailSender.Send(userCard.Email, body: gonderilecekMail, subject: "Hesap aktivasyon!"); _usRep.Add(userCard); //öncelikle bunu eklemelisiniz...Cünkü AppUser'in ID'si ilk basta olusmalı...Cünkü siz birebir ilişkide AppUser zorunlu olan alan Profile ise opsiyonal alan olarak olusturdunuz... Dolayısıyla ilk basta AppUser'in ID'si SaveChanges ile olusmalı if (!string.IsNullOrEmpty(companyCard.CompanyName) || !string.IsNullOrEmpty(companyCard.Phone) || !string.IsNullOrEmpty(companyCard.Address)) { companyCard.ID = userCard.ID; _ccRep.Add(companyCard); } return(View("RegisterOk")); }
public HttpResponseMessage RegisterConsumer([FromBody] Consumer consumer) { try { Consumer existingConsumer = db.Consumers.Find(consumer.UserName); if (existingConsumer != null) { return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Username Already Exists")); } Bank newConsumerBank = db.Banks.Find(consumer.IFSC); if (newConsumerBank == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid IFSC Code")); } Consumer newConsumer = new Consumer { UserName = consumer.UserName, Name = consumer.Name, Email = consumer.Email, PhoneNumber = consumer.PhoneNumber, Password = consumer.Password, AccountNo = consumer.AccountNo, IFSC = consumer.IFSC, Address = consumer.Address, CardTypeNo = consumer.CardTypeNo, ApplicationDate = DateTime.Now, DateOfBirth = consumer.DateOfBirth, IsPending = true, IsOpen = false }; Card companyCard = db.Cards.Find(consumer.CardTypeNo); if (companyCard == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid Card Scheme")); } CompanyCard newConsumerCard = new CompanyCard() { CardNumber = $"{consumer.UserName}{consumer.IFSC}", CardTypeNo = consumer.CardTypeNo, UserName = consumer.UserName, Validity = DateTime.Now.AddMonths(24), Balance = companyCard.CardLimit, IsOpen = false }; db.Entry(newConsumer).State = System.Data.Entity.EntityState.Added; db.Entry(newConsumerCard).State = System.Data.Entity.EntityState.Added; db.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Created, "User Registered Successfully And Awaiting Verification")); } catch { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Consumer Could Not Be Registered")); } }
private static void CreateEmployeeAndPrint(Department department, CompanyCard prototypeCard) { var employeesNum = 100; // set number of empolyees per department for (int i = 0; i < employeesNum; i++) { var employeeName = "employee" + i; var employee = new Employee(employeeName, department); var card = prototypeCard.Clone(); card.Name = employee.Name; // change name from prototype of CompanyCard for each employee employee.CompanyCard = card; employee.CompanyCard.Print(); } }
public HttpResponseMessage GetCreditDetails(string id) { try { CompanyCard consumerCard = financeEntities.CompanyCards.Include("Card").Where(c => c.UserName == id).FirstOrDefault(); if (consumerCard == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Consumer Credit Details Could Not Be Found")); } var creditDetails = new { TotalCredit = consumerCard.Card.CardLimit, CreditUsed = consumerCard.Card.CardLimit - consumerCard.Balance, RemainingCredit = consumerCard.Balance }; return(Request.CreateResponse(HttpStatusCode.OK, creditDetails)); } catch { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Card Details Could Not Be Fetched")); } }
public HttpResponseMessage PlaceOrder([FromBody] Order newOrder) { try { Consumer consumer = financeEntities.Consumers.Find(newOrder.UserName); if (consumer == null) { return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Username Is Invalid")); } Product selectedProduct = financeEntities.Products.Find(newOrder.ProductID); if (selectedProduct == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Product Could Not Be Found")); } EMI scheme = financeEntities.EMIs.Find(newOrder.SchemeNo); if (scheme == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "EMI Scheme Could Not Be Found")); } CompanyCard companyCard = financeEntities.CompanyCards.Where(c => c.UserName == newOrder.UserName).FirstOrDefault(); if (companyCard == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Conumser Card Balance Could Not Be Fetched")); } int emiCost = CalculateMonthlyEMI(selectedProduct, scheme.Months); int orderAmount = emiCost * scheme.Months; if (orderAmount > companyCard.Balance) { return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Insufficient Balance To Place Order")); } if (DateTime.Compare(companyCard.Validity, DateTime.Now) < 0) { return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Your Card Is Deactivated")); } Transaction newTransaction = new Transaction() { UserName = consumer.UserName, ProductID = selectedProduct.ProductID, SchemeNo = scheme.SchemeNo, PurchaseDate = DateTime.Now, EMIAmount = emiCost, RemainingAmount = orderAmount - emiCost, LastChecked = DateTime.Now }; financeEntities.Entry(newTransaction).State = System.Data.Entity.EntityState.Added; var currentBalance = companyCard.Balance - emiCost; companyCard.Balance = currentBalance; Deduction newAmountDeduction = new Deduction() { UserName = consumer.UserName, DeductionDate = DateTime.Now, EMIAmout = emiCost, ProductID = selectedProduct.ProductID }; financeEntities.Entry(newAmountDeduction).State = System.Data.Entity.EntityState.Added; financeEntities.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Created, "Order Placed Successfully")); } catch { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Order Could Not Be Placed")); } }
public static void ExecuteFromSearch() { Parser parser = new Parser(CaptchaApi); Exporter exporter = new Exporter(ExportedDir); AuthCredetials credentials = new AuthCredetials { UserName = "******", Password = "******" }; IWebDriver driver = parser.CreateDriver(ExtDir, credentials); FileInfo searchFI = new FileInfo(ExportedDir + "\\Search.xlsx"); ExcelPackage excel = new ExcelPackage(searchFI); ExcelWorksheet sheet = excel.Workbook.Worksheets.FirstOrDefault(); int last_row = sheet.Cells.Where(c => c.Start.Column == 2 && c.Value != null).Last().End.Row; string search_page_url = "https://www.rusprofile.ru"; for (int i = 631; i <= last_row; i++) { error_link: try { forward_base: if (driver.Url != search_page_url) { driver.Url = "https://www.rusprofile.ru"; } if (driver.PageSource.Contains("«Я не робот».")) { parser.SolveCaptcha(driver, driver.Url); goto forward_base; } string searchString = sheet.Cells[i, 2].Value.ToString() + ", " + sheet.Cells[i, 6].Value.ToString(); var searchInput = driver.FindElement(By.ClassName("index-search-input")); if (searchInput != null) { searchInput.SendKeys(searchString); } Thread.Sleep(1000); var finded = driver.FindElements(By.XPath("//a[@class='search-drop__item']")); if (finded.Count == 0) { Console.WriteLine(searchString + "- нет результатов поиска"); continue; } string finded_URL = finded.FirstOrDefault().GetAttribute("href"); CompanyCard card = parser.ParseCard(driver, finded_URL).Result; sheet.Cells[i, 3].Value = card.Phones; sheet.Cells[i, 4].Value = card.Mails; sheet.Cells[i, 5].Value = card.Sites; sheet.Cells[i, 7].Value = card.PrimaryOccupation; sheet.Cells[i, 8].Value = card.OrganizationStatus; excel.Save(); } catch { goto error_link; } } Console.WriteLine("Done"); Console.ReadKey(); }
public static void ExecuteFromLinks(string[] args) { Proxy proxy = null; string LinksFileName = string.Empty; foreach (string arg in args) { if (arg.Contains("Links =")) { LinksFileName = arg.Replace("Links = ", string.Empty).Trim(); } if (arg.Contains("Proxy =")) { proxy = new Proxy() { HttpProxy = arg.Replace("Proxy = ", string.Empty).Trim() }; } } if (string.IsNullOrEmpty(LinksFileName)) { LinksFileName = "Links2.xlsx"; } SoundPlayer player = new SoundPlayer(Environment.CurrentDirectory + "\\Speech On.wav"); Dictionary <string, string> urls = new Dictionary <string, string>() { //{"411000", "https://www.rusprofile.ru/codes/411000/sankt-peterburg/" } , //{"412000", "https://www.rusprofile.ru/codes/412000/sankt-peterburg/" } , //{"421100", "https://www.rusprofile.ru/codes/421100/sankt-peterburg/" } , //{"421200", "https://www.rusprofile.ru/codes/421200/sankt-peterburg/" } , //{"421300", "https://www.rusprofile.ru/codes/421300/sankt-peterburg/" } , //{"422100", "https://www.rusprofile.ru/codes/422100/sankt-peterburg/" } , //{"422200", "https://www.rusprofile.ru/codes/422200/sankt-peterburg/" } , //{"422210", "https://www.rusprofile.ru/codes/422210/sankt-peterburg/" } , //{"422220", "https://www.rusprofile.ru/codes/422220/sankt-peterburg/" } , //{"422230", "https://www.rusprofile.ru/codes/422230/sankt-peterburg/" } , //{"429100", "https://www.rusprofile.ru/codes/429100/sankt-peterburg/" } , //{"429110", "https://www.rusprofile.ru/codes/429110/sankt-peterburg/" } , //{"429120", "https://www.rusprofile.ru/codes/429120/sankt-peterburg/" } , //{"429140", "https://www.rusprofile.ru/codes/429140/sankt-peterburg/" } , //{"429150", "https://www.rusprofile.ru/codes/429150/sankt-peterburg/" } , //{"429900", "https://www.rusprofile.ru/codes/429900/sankt-peterburg/" } , //{"431100", "https://www.rusprofile.ru/codes/431100/sankt-peterburg/" } , //{"431200", "https://www.rusprofile.ru/codes/431200/sankt-peterburg/" } , //{"431210", "https://www.rusprofile.ru/codes/431210/sankt-peterburg/" } , //{"431220", "https://www.rusprofile.ru/codes/431220/sankt-peterburg/" } , //{"431230", "https://www.rusprofile.ru/codes/431230/sankt-peterburg/" } , //{"431240", "https://www.rusprofile.ru/codes/431240/sankt-peterburg/" } , //{"431300", "https://www.rusprofile.ru/codes/431300/sankt-peterburg/" } , //{"432000", "https://www.rusprofile.ru/codes/432000/sankt-peterburg/" } , //{"432100", "https://www.rusprofile.ru/codes/432100/sankt-peterburg/" } , //{"432200", "https://www.rusprofile.ru/codes/432200/sankt-peterburg/" } , //{"432900", "https://www.rusprofile.ru/codes/432900/sankt-peterburg/" } , //{"433100", "https://www.rusprofile.ru/codes/433100/sankt-peterburg/" } , //{"433200", "https://www.rusprofile.ru/codes/433200/sankt-peterburg/" } , //{"433210", "https://www.rusprofile.ru/codes/433210/sankt-peterburg/" } , //{"433220", "https://www.rusprofile.ru/codes/433220/sankt-peterburg/" } , //{"433230", "https://www.rusprofile.ru/codes/433230/sankt-peterburg/" } , //{"433300", "https://www.rusprofile.ru/codes/433300/sankt-peterburg/" } , //{"433400", "https://www.rusprofile.ru/codes/433400/sankt-peterburg/" } , //{"433410", "https://www.rusprofile.ru/codes/433410/sankt-peterburg/" } , //{"433420", "https://www.rusprofile.ru/codes/433420/sankt-peterburg/" } , //{"433900", "https://www.rusprofile.ru/codes/433900/sankt-peterburg/" } , //{"439100", "https://www.rusprofile.ru/codes/439100/sankt-peterburg/" } , //{"439900", "https://www.rusprofile.ru/codes/439900/sankt-peterburg/" } , //{"439910", "https://www.rusprofile.ru/codes/439910/sankt-peterburg/" } , //{"439920", "https://www.rusprofile.ru/codes/439920/sankt-peterburg/" } , //{"439930", "https://www.rusprofile.ru/codes/439930/sankt-peterburg/" } , //{"439940", "https://www.rusprofile.ru/codes/439940/sankt-peterburg/" } , //{"439950", "https://www.rusprofile.ru/codes/439950/sankt-peterburg/" } , //{"439960", "https://www.rusprofile.ru/codes/439960/sankt-peterburg/" } , //{"439970", "https://www.rusprofile.ru/codes/439970/sankt-peterburg/" } , //{"439990", "https://www.rusprofile.ru/codes/439990/sankt-peterburg/" } , }; Parser parser = new Parser(CaptchaApi); Exporter exporter = new Exporter(ExportedDir); AuthCredetials credentials = new AuthCredetials { UserName = "******", Password = "******" }; IWebDriver driver = null; if (proxy == null) { driver = parser.CreateDriver(ExtDir, credentials); } else { driver = parser.CreateDriver(ExtDir, credentials, proxy); } DirectoryInfo profiles = new DirectoryInfo(ExportedDir + "\\Profiles\\"); FileInfo[] files = profiles.GetFiles(); FileInfo links = new FileInfo(ExportedDir + "\\" + LinksFileName); ExcelPackage pack = new ExcelPackage(links); for (int sheetNum = 0; sheetNum < pack.Workbook.Worksheets.Count; sheetNum++) { foreach (ExcelWorksheet sheet in pack.Workbook.Worksheets) { second_trying: ExcelWorksheet linkSheet = sheet; int last_row = linkSheet.Cells.Where(c => c.Start.Column == 1 && !c.Value.ToString().Equals("")).Last().End.Row; int last_profile_row = 0; Console.WriteLine("START PARSING " + linkSheet.Name + "At time: " + DateTime.Now.ToString()); ExcelPackage profilePack = null; try { profilePack = new ExcelPackage(files.FirstOrDefault(f => f.Name.Contains(linkSheet.Name))); ExcelWorksheet profileSheet = profilePack.Workbook.Worksheets.FirstOrDefault(); last_profile_row = profileSheet.Cells.Where(c => c.Start.Column == 2 && !c.Value.ToString().Equals("")).Last().End.Row + 1; IEnumerable <ExcelRangeBase> query = from row in linkSheet.Cells["C:XFD"] select row; ExcelRangeBase trying_find_last = query.ToList().FirstOrDefault(c => c.Value.ToString() == "wait"); if (trying_find_last == null) { Console.WriteLine("SKIP PARSING " + linkSheet.Name + "At time: " + DateTime.Now.ToString()); continue; } int last_not_parsed_row = trying_find_last.Start.Row; for (int row_index = last_not_parsed_row; row_index <= last_row; row_index++) { string url = linkSheet.Cells[row_index, 2].Value.ToString(); if (linkSheet.Cells[row_index, 3].Value.ToString() == "ok") { continue; } CompanyCard card = parser.ParseCard(driver, url).Result; #region map profileSheet.Cells[last_profile_row, 2].Value = card.ShortName; profileSheet.Cells[last_profile_row, 3].Value = card.FullName; profileSheet.Cells[last_profile_row, 4].Value = card.Phones; profileSheet.Cells[last_profile_row, 5].Value = card.Mails; profileSheet.Cells[last_profile_row, 6].Value = card.Sites; profileSheet.Cells[last_profile_row, 7].Value = card.INN; profileSheet.Cells[last_profile_row, 8].Value = card.PrimaryOccupation; profileSheet.Cells[last_profile_row, 9].Value = card.OrganizationStatus; #endregion last_profile_row++; profilePack.Save(); linkSheet.Cells[row_index, 3].Value = "ok"; } pack.Save(); Console.WriteLine("STOP PARSING " + linkSheet.Name + "At time: " + DateTime.Now.ToString()); } catch (Exception) { Console.WriteLine("Error on links page number = " + sheetNum); Console.WriteLine(" last profile row = " + last_profile_row); Console.WriteLine(" executed again"); save_mark: try { pack.Save(); } catch (ArgumentOutOfRangeException) { goto save_mark; } goto second_trying; } } } driver.Close(); player.Play(); Console.WriteLine("Done"); Console.ReadKey(); }
public async Task <CompanyCard> ParseCard(IWebDriver driver, string URL) { SoundPlayer player = new SoundPlayer(Environment.CurrentDirectory + "\\Speech On.wav"); forward: driver.Url = URL; Thread.Sleep(BaseSleepLoading); if (driver.PageSource.Contains("«Я не робот».")) { SolveCaptcha(driver, URL); goto forward; } CompanyCard card = new CompanyCard(); System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> showHidden = driver.FindElements(By.XPath("(//button[@class='all-text-link js-hidden-text-opener'])")); Regex checkMore = new Regex(@"[Еще ]{4}[\d.]"); try { foreach (IWebElement elem in showHidden) { if (checkMore.IsMatch(elem.Text)) { elem.Click(); Thread.Sleep(100); } } } catch (Exception) { } card.ShortName = driver.FindElement(By.ClassName("company-header__row")).Text.Trim(); card.FullName = driver.FindElement(By.ClassName("company-name")).Text.Trim(); System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> phones = driver.FindElements(By.XPath("//span[contains(@class,'company-info__contact phone')]")); foreach (IWebElement phone in phones) { string editedPhone = phone.Text.Replace("Телефон\r\n", string.Empty); card.Phones += editedPhone + Environment.NewLine; } card.Phones = phones.Count > 0 ? card.Phones.Trim() : "нет данных"; System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> mails = driver.FindElements(By.XPath("//span[contains(@class,'company-info__contact mail')]")); foreach (IWebElement mail in mails) { string editedMail = mail.Text.Replace("Электронная почта\r\n", string.Empty); card.Mails += editedMail + Environment.NewLine; } card.Mails = mails.Count > 0 ? card.Mails.Trim() : "нет данных"; System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> sites = driver.FindElements(By.XPath("//span[contains(@class,'company-info__contact site')]")); foreach (IWebElement site in sites) { string editedSite = site.Text.Replace("Сайт\r\n", string.Empty); card.Sites += editedSite + Environment.NewLine; } card.Sites = sites.Count > 0 ? card.Sites.Trim() : "нет данных"; try { IWebElement inn = driver.FindElement(By.XPath("(//dd[@class='company-info__text has-copy'])[2]")); IWebElement kpp = driver.FindElement(By.XPath("(//dd[@class='company-info__text has-copy'])[3]")); card.INN = inn.Text + " / " + kpp.Text; } catch (NoSuchElementException) { card.INN = "нет данных"; } System.Collections.ObjectModel.ReadOnlyCollection <IWebElement> primary_occupation = driver.FindElements(By.ClassName("company-info__text")); Regex regex = new Regex(@"\D*[(]{1}[\d]*[.]{1}[\d.]*[)]{1}"); foreach (IWebElement info in primary_occupation) { if (regex.IsMatch(info.Text.Trim())) { card.PrimaryOccupation = info.Text.Trim(); break; } } if (card.PrimaryOccupation == null) { player.Play(); } string organization_status = driver.FindElement(By.ClassName("company-status")).Text; card.OrganizationStatus = organization_status; return(card); }