public static void SeedInternetPackages(ISPContext context) { Dictionary <string, double> internetPackagesPrice = new Dictionary <string, double> { { "Старт", 60 }, { "Стандарт", 80 }, { "Супер", 120 } }; Dictionary <string, double[]> internetPackagesSpeed = new Dictionary <string, double[]> { { "Старт", new double[] { 10, 5 } }, { "Стандарт", new double[] { 50, 35 } }, { "Супер", new double[] { 100, 100 } } }; foreach (var internetPackageInfo in internetPackagesPrice) { var internetPackage = new InternetPackage() { Name = internetPackageInfo.Key, Price = internetPackageInfo.Value, DownloadSpeed = internetPackagesSpeed[internetPackageInfo.Key][0], UploadSpeed = internetPackagesSpeed[internetPackageInfo.Key][1] }; context.InternetPackages.Add(internetPackage); } context.SaveChanges(); }
/// <summary> /// Create new InternetPackageContract, cancel all others InternetPackageContract and change user balance /// </summary> public override void Create(InternetPackageContract item) { InternetPackage intrenetPackage = internetPackageRepository.Get(item.InternetPackageId); double monthPrice = CalculatePrice(intrenetPackage.Price); double price = CalculatePrice(monthPrice); User user = (userRepository as UserRepository).GetById(item.SubscriberId); if (user.Balance < price) { throw new Exception(); } ContractAddress contractAddress = contractAddressRepository.Get(item.ContractAddressId); IEnumerable <InternetPackageContract> intenetPackageContracts = contractAddress.InternetPackageContracts.Where(internetContract => !internetContract.IsCanceled); foreach (InternetPackageContract internetPackageContract in intenetPackageContracts) { Cancel(internetPackageContract.Id); } base.Create(item); user.Balance -= price; userRepository.Edit(user); }
public FileResult DownloadInternetPackage(Guid id, string format = "txt") { InternetPackage item = internetPackageActions.GetNotCanceled(id); Stream stream; string fileName; switch (format) { case "pdf": fileName = string.Format("ПакетИнтернетУслуг{0}.pdf", item.Name); stream = action.DownloadPDF(item); stream.Seek(0, 0); return(File(stream, "application/pdf", fileName)); case "docx": fileName = string.Format("ПакетИнтернетУслуг{0}.docx", item.Name); stream = action.DownloadDOCX(item); stream.Seek(0, 0); return(File(stream, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", fileName)); default: fileName = string.Format("ПакетИнтернетУслуг{0}.txt", item.Name); stream = action.DownloadTXT(item); stream.Seek(0, 0); return(File(stream, "text/plain", fileName)); } }
public ActionResult Edit(InternetPackage internetPackage) { if (!ModelState.IsValid) { return(View(internetPackage)); } actions.Edit(internetPackage); return(RedirectToAction("Index")); }
public InternetPackageDetails(InternetPackage internetPackage) { Id = internetPackage.Id; Name = internetPackage.Name; DownloadSpeed = internetPackage.DownloadSpeed; UploadSpeed = internetPackage.UploadSpeed; Price = internetPackage.Price; IsCanceled = internetPackage.IsCanceled; Contracts = internetPackage.Contracts.Where(internetPackageContract => internetPackageContract.IsCanceled == false).Count(); ContractsCanceled = internetPackage.Contracts.Where(internetPackageContract => internetPackageContract.IsCanceled == true).Count(); ContractsTotal = Contracts + ContractsTotal; }
public Stream DownloadTXT(InternetPackage item) { MemoryStream stream = new MemoryStream(); StreamWriter streamWriter = new StreamWriter(stream, Encoding.UTF8); streamWriter.WriteLine("Информация предоставлена (UTC): {0}", DateTime.UtcNow); streamWriter.WriteLine("Название пакета интернет услуг: {0}", item.Name); streamWriter.WriteLine("Скорость приёма: {0}", item.DownloadSpeed); streamWriter.WriteLine("Скорость отдачи: {0}", item.UploadSpeed); streamWriter.WriteLine("Стоимость в месяц: {0}", item.Price); streamWriter.Flush(); return(stream); }
/// <summary> /// Check can user subscribe to this tariff plan /// </summary> public bool CanSubscribe(Guid contractAddressId, Guid internetPackageId) { ContractAddress contractAddress = contractAddressRepository.Get(contractAddressId); if (contractAddress.InternetPackageContracts.Count(item => item.InternetPackageId == internetPackageId && !item.IsCanceled) != 0) { return(false); } User user = (userRepository as UserRepository).GetById(contractAddress.SubscriberId); InternetPackage internetPackage = internetPackageRepository.Get(internetPackageId); double price = CalculatePrice(internetPackage.Price); return(user.Balance >= price); }
public Stream DownloadPDF(InternetPackage item) { PdfMetamorphosis docxConverter = new PdfMetamorphosis(); if (docxConverter == null) { return(null); } MemoryStream docxFileStream = (DownloadDOCX(item) as MemoryStream); byte[] pdfFile = docxConverter.DocxToPdfConvertByte(docxFileStream.ToArray()); MemoryStream pdfFileStream = new MemoryStream(pdfFile); return(pdfFileStream); }
/// <summary> /// Create new InternetPackageContract, cancel all others InternetPackageContract and change user balance /// </summary> public void Create(string userId, Guid contractAddressId, Guid internetPackageId) { User user = (userRepository as UserRepository).GetById(userId); ContractAddress contractAddress = contractAddressRepository.Get(contractAddressId); InternetPackage internetPackage = internetPackageRepository.Get(internetPackageId); InternetPackageContract internetPackageContract = new InternetPackageContract() { Number = repository.Count().ToString(), DoS = DateTime.UtcNow, SubscriberId = user.Id, ContractAddressId = contractAddress.Id, InternetPackageId = internetPackage.Id, }; Create(internetPackageContract); }
public Stream DownloadDOCX(InternetPackage item) { MemoryStream stream = new MemoryStream(); DocumentCore docx = new DocumentCore(); Section section = new Section(docx); docx.Sections.Add(section); section.PageSetup.PaperType = PaperType.A4; section.Blocks.Add(new Paragraph(docx, string.Format("Информация предоставлена (UTC): {0}", DateTime.UtcNow))); section.Blocks.Add(new Paragraph(docx, string.Format("Название пакета интернет услуг: {0}", item.Name))); section.Blocks.Add(new Paragraph(docx, string.Format("Скорость приёма: {0}", item.DownloadSpeed))); section.Blocks.Add(new Paragraph(docx, string.Format("Скорость отдачи: {0}", item.UploadSpeed))); section.Blocks.Add(new Paragraph(docx, string.Format("Стоимость в месяц: {0}", item.Price))); docx.Save(stream, SaveOptions.DocxDefault); return(stream); }
public ActionResult Edit(Guid id) { InternetPackage internetPackage = actions.Get(id); return(View(internetPackage)); }
public ActionResult Create() { InternetPackage internetPackage = new InternetPackage(); return(View(internetPackage)); }