예제 #1
0
        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();
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        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));
            }
        }
예제 #4
0
        public ActionResult Edit(InternetPackage internetPackage)
        {
            if (!ModelState.IsValid)
            {
                return(View(internetPackage));
            }

            actions.Edit(internetPackage);
            return(RedirectToAction("Index"));
        }
예제 #5
0
        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;
        }
예제 #6
0
        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);
        }
예제 #7
0
        /// <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);
        }
예제 #8
0
        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);
        }
예제 #9
0
        /// <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);
        }
예제 #10
0
        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);
        }
예제 #11
0
        public ActionResult Edit(Guid id)
        {
            InternetPackage internetPackage = actions.Get(id);

            return(View(internetPackage));
        }
예제 #12
0
        public ActionResult Create()
        {
            InternetPackage internetPackage = new InternetPackage();

            return(View(internetPackage));
        }