/// <summary>
        /// Create new TVChannelPackageContract, cancel all TVChannelContracts constains in that package and change user balance
        /// </summary>
        public override void Create(TVChannelPackageContract item)
        {
            TVChannelPackage tvChannelPackage = tvChannelPackageRepository.Get(item.TVChannelPackageId);

            double monthPrice = CalculatePrice(tvChannelPackage.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 <TVChannel>         tvChannelsInPackage = tvChannelPackageRepository.Get(item.TVChannelPackageId).Channels.ToArray();
            IEnumerable <TVChannelContract> tvChannelContracts  = contractAddress.TVChannelContracts.Where(tvChannel => !tvChannel.IsCanceled).ToArray();

            foreach (TVChannelContract tvChannelContract in tvChannelContracts)
            {
                if (tvChannelsInPackage.Count(tvChannel => tvChannel.Id == tvChannelContract.TVChannelId) != 0)
                {
                    TVChannelContract tvChannelContractToCancel = tvChannelContractRepository.Get(tvChannelContract.Id);
                    tvChannelContractToCancel.IsCanceled = true;
                    tvChannelContractRepository.Edit(tvChannelContractToCancel);
                }
            }

            base.Create(item);

            user.Balance -= price;
            userRepository.Edit(user);
        }
Exemplo n.º 2
0
        public FileResult DownloadTVChannelPackage(Guid id, string format = "txt")
        {
            TVChannelPackage item = tvChannelPackageActions.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));
            }
        }
Exemplo n.º 3
0
        public static void SeedTVChannelPackages(ISPContext context)
        {
            Random rand = new Random();

            Dictionary <string, double> tvChannelPackagesPrice = new Dictionary <string, double>
            {
                { "Развлекательный", 5 },
                { "Познавательный", 5 },
                { "Кино и сериалы", 4 },
                { "Общественный", 2 },
                { "Музыкальный", 3 },
                { "Спортивный", 5 },
                { "Новостной", 2 },
                { "Детский", 2 },
                { "Религиозный", 10 },
                { "Взрослый", 10 }
            };

            Dictionary <string, string[]> tvChannelsInPackages = new Dictionary <string, string[]>
            {
                { "Развлекательный", new string[] { "ТНТ", "СТС", "ТНТ4", "РЕН ТВ", "Пятница", "2х2", "Че", "ТЕТ", "Paramount Comedy", "НЛО ТВ", "СТС love", "Сарафан ТВ", "ТНТ", "RTVI", "Ю", "QTV", "Вопросы и ответы", "Fashion TV", "Парк Развлечений", "Zoom", "Бигуди", "World Fashion Channel", "ВТВ", "Юмор Box", "STV", "Живи!", "Тонус ТВ", "Телеканал Деда Мороза", "K1", "К2", "Pro Все", "Maxxi-TV", } },
                { "Познавательный", new string[] { "Discovery Channel", "Discovery Science", "National Geographic", "Nat Geo Wild", "Оружие", "Охотник и рыболов", "Наука 2.0", "Galaxy TV", "Viasat History", "Охота и Рыбалка", "Animal Planel", "Viasat Explorer", "Моя планета", "History Channel", "Первый автомобильный", "Техно 24", "ID Xtra", "История", "TLC", "Авто Плюс", "Viasat Nature", "Travel Channel", "Совершенно секретно", "365 дней", "Драйв ТВ", "Усадьба", "Кухня ТВ", "Телепутешествия", "English Club TV", "Россия К", "24 ДОК", "Russian Travel Guide", "Кто есть кто", "Бобёр ТВ", "CBS Reality", "Da Vinci Learning", "Нано ТВ", "Психология 21", "Zooпарк", "Еда ТВ", "Живая Планета", "Мега", "Загородная жизнь", "DTV", "Домашние животные", "Здоровое ТВ", "Outdoor Channel", "Зоо ТВ", "Мама", "Трофей", "Морской", "Food Network" } },
                { "Кино и сериалы", new string[] { "TV 1000 Action", "Кинохит", "Кинопремьера", "Русский Детектив", "Дом Кино", "ТВ 3", "TV 1000", "НТС", "Родное Кино", "Кинопоказ", "Наше Новое Кино", "Кинокомедия", "TV 1000 Русское Кино", "Наше любимое кино", "Киномикс", "Киносвидание", "FOX", "XXI", "SONY SCI-FI", "Иллюзион+", "Мужское Кино", "Еврокино", "Русский Иллюзион", "Enter-фильм", "FOX Life", "AMEDIA 2", "Киносерия", "HBO 2", "Paramount Channel", "Русский бестселлер", "CBS Drama", "Комедия", "SET", "Zee TV", "Индийское Кино", "Киносемья", "AMC" } },
                { "Общественный", new string[] { "Россия 1", "НТВ", "1+1", "СТБ", "2+2", "ICTV", "Интер", "Звезда", "Новый канал", "Украина", "5 канал", "Россия-РТР", "ТВЦ", "Первый канал (Европа)", "UA:Перший", "НТВ Мир", "Ретро ТВ", "Домашний", "Ностальгия", "TVCI", "Первый канал (СНГ)", "CBS 2 New York", "Интер+", "Мир", "Первый канал", "ОТР", "Время", "Беларусь 24", "Белсат ТВ", "Tonis", "Dobro TV", "Подмосковье", "Страна", "Первый канал (Евразия)", "1+1 Internation", "Красная линия", "Унiан", "Вместе РФ" } },
                { "Музыкальный", new string[] { "Europa Plus TV", "RU TV", "MTV Dance", "ТНТ-Music", "Муз ТВ", "VH1 Classic", "Шансон ТВ", "Scuzz", "Музыка Первого", "MTV Hits", "Bridge TV", "Dange TV", "M1", "EU Music", "Kerrang!", "MTV Russia", "Ля-минор", "VH1", "MTV Rocks", "Music Box UA", "Rusong TV", "MCM Top", "Mezzo", "Первый Музыкальный канал", "A-One", "4 Fun TV", "M2", "O-TV", "Music Box Ru", "Music Box Tv", "VOX Old's Cool TV", "Eska ROCK TV", "ESKA Party TV", "ESKA Best Music TV", "ESKA TV", "WAWA TV", "Retro Music TV", "Bridge TV Classic", "Bridge TV Dance", "Bridge HD" } },
                { "Спортивный", new string[] { "НТВ+ Наш футбол", "Футбол 1", "Матч! Арена", "Eurosport", "Футбол 2", "Eurosport 2", "Матч! Наш Спорт", "Матч! Игра", "ViasatSport", "КХЛ", "Сетанта Спорт", "Матч! Боец", "Sky Sports F1", "Viasat Sport Baltic", "Матч! Планета", "Беларусь 5", "Sky Sports 1", "Спорт 1", "BT Sport 1", "Viasat Hockey", "Сопрт 2", "SkySports 3", "NBA TV", "Premier Sports", "Sky Sports 2", "BT Sport 2", "ESPN America", "Motors TV", "Футбол", "Sky Sports 4", "Extreme Sports", "Sky Sports 5", "Viasat Motor", "Русский Экстрим", "TV3 Sport 2", "Viasat Golf", "Bein Sport 7", "Bein Sport 6", "Bein Sport 8", "Viasat Fotboll", "Eurosport British", "Eurosport 2 British", "Arena Sport 1", "Movistar F1", "Movistar MotoGP", "Arena Sport 2", "Sport TV 1", "BT Sport ESPN", "Nova Sport", "Arena Sport 3" } },
                { "Новостной", new string[] { "Россия 24", "Life News", "Дождь", "112 Украина", "5 канал", "РБК", "24", "EuroNews", "CNN International", "BBC World News", "Business", "Мир 24", "News One", "100% News" } },
                { "Детский", new string[] { "Мульт", "Disney Channel", "ПЛЮСПЛЮС", "Nickelodeon", "Карусель", "nick jr.", "Cartoon Network", "JimJam", "Детский", "Мультимания", "Детский Мир", "Пиксель", "Малятко TV", "Улыбка Ребенка", "Gulli", "Boomerang", "Радость моя", "TiJi", "Ani", "Рыжий", "Любимое ТВ" } },
                { "Религиозный", new string[] { "Союз", "Спас ТВ", "CNL" } },
                { "Взрослый", new string[] { "Platinum TV", "Brazzers TV Europe", "Satisfaction HD", "FrenchLoverTV", "XXL", "Exotica TV", "Hustler TV", "Русская ноь", "Redlight Premium", "O-la-la", "SCT", "CentoXCento TV", "Sext6Senso", "Dorcel TV", "Ночной клуб", "Искушения", "Private TV", "Nuart TV", "FAP TV amateur", "Husler Blue", "Daring TV", "Playboy TV", "FAP TV 2", "Эгоист ТВ", "Free-X TV", "FAP TV 4", "FAP TV 3", "FAP TV teens", "FAP TV Legal Porno", "FAP TV compilation", "FAP TV older", "FAP TV anal", "Brazzers TV", "FAP TV parody", "Phoenix Marie TV", "FAP TV pissing", "FAP TV lesbian", "FAP TV BBW", "FAP TV teaching", "Jasmin TV" } },
            };

            foreach (var tvChannelsInPackage in tvChannelsInPackages)
            {
                var tvChannelPackage = new TVChannelPackage()
                {
                    Name     = tvChannelsInPackage.Key,
                    Price    = tvChannelsInPackage.Value.Count() * (tvChannelPackagesPrice[tvChannelsInPackage.Key] / 2),
                    Channels = new List <TVChannel>()
                };

                foreach (var tvChannelInPackage in tvChannelsInPackage.Value)
                {
                    var tvChannel = new TVChannel()
                    {
                        Name   = tvChannelInPackage,
                        Price  = tvChannelPackagesPrice[tvChannelsInPackage.Key],
                        IsIPTV = rand.NextDouble() > 0.5,
                        IsTV   = rand.NextDouble() > 0.25
                    };
                    tvChannel.IsCanceled = (!tvChannel.IsTV && !tvChannel.IsIPTV ? true : false);
                    tvChannelPackage.Channels.Add(tvChannel);
                }

                context.TVChannelPackages.Add(tvChannelPackage);
            }

            context.SaveChanges();
        }
        public ActionResult Create(TVChannelPackage tvChannelPackage)
        {
            if (!ModelState.IsValid)
            {
                return(View(tvChannelPackage));
            }

            actions.Create(tvChannelPackage);
            return(RedirectToAction("Index"));
        }
        public ActionResult Details(Guid id)
        {
            TVChannelPackage tvChannelPackage = actions.Get(id);

            ViewBag.tvChannelId = actions.GetAllChannelsExceptChannelsInPackage(id).Select(tvChannel => new SelectListItem()
            {
                Text = tvChannel.Name, Value = tvChannel.Id.ToString()
            });
            return(View(new TVChannelPackageDetails(tvChannelPackage)));
        }
Exemplo n.º 6
0
        public TVChannelPackageDetails(TVChannelPackage items)
        {
            Id         = items.Id;
            Name       = items.Name;
            Price      = items.Price;
            IsCanceled = items.IsCanceled;

            Contracts         = items.Contracts.Count(tvChannelPackageContract => tvChannelPackageContract.IsCanceled == false);
            ContractsCanceled = items.Contracts.Count(tvChannelPackageContract => tvChannelPackageContract.IsCanceled == true);
            ContractsTotal    = Contracts + ContractsCanceled;

            Channels = items.Channels.Select(tvChannel => new TVChannelDetails(tvChannel)).ToArray();
        }
        /// <summary>
        /// Check can user subscribe to this tariff plan
        /// </summary>
        public bool CanSubscribe(Guid contractAddressId, Guid tvChannelPackageId)
        {
            ContractAddress contractAddress = contractAddressRepository.Get(contractAddressId);

            if (contractAddress.TVChannelPackageContracts.Count(item => item.TVChannelPackageId == tvChannelPackageId && !item.IsCanceled) != 0)
            {
                return(false);
            }

            User             user             = (userRepository as UserRepository).GetById(contractAddress.SubscriberId);
            TVChannelPackage tvChannelPackage = tvChannelPackageRepository.Get(tvChannelPackageId);
            double           price            = CalculatePrice(tvChannelPackage.Price);

            return(user.Balance >= price);
        }
Exemplo n.º 8
0
        public Stream DownloadPDF(TVChannelPackage 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 TVChannelPackageContract, cancel all TVChannelContracts constains in that package and change user balance
        /// </summary>
        public void Create(string userId, Guid contractAddressId, Guid tvChannelPackageId)
        {
            User             user             = (userRepository as UserRepository).GetById(userId);
            ContractAddress  contractAddress  = contractAddressRepository.Get(contractAddressId);
            TVChannelPackage tvChannelPackage = tvChannelPackageRepository.Get(tvChannelPackageId);

            TVChannelPackageContract tvChannelPackageContract = new TVChannelPackageContract()
            {
                Number             = repository.Count().ToString(),
                DoS                = DateTime.UtcNow,
                SubscriberId       = user.Id,
                ContractAddressId  = contractAddress.Id,
                TVChannelPackageId = tvChannelPackage.Id
            };

            Create(tvChannelPackageContract);
        }
Exemplo n.º 10
0
        public Stream DownloadTXT(TVChannelPackage 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.Channels.Count());
            streamWriter.WriteLine("Стоимость в месяц: {0}", item.Price);
            streamWriter.WriteLine("Список каналов:");
            foreach (TVChannel tvChannel in item.Channels)
            {
                streamWriter.WriteLine("\tНазвание канала: {0}", tvChannel.Name);
                streamWriter.WriteLine("\t\tНаличие IPTV: {0}", (tvChannel.IsIPTV ? "Да" : "Нет"));
                streamWriter.WriteLine("\t\tНаличие TV: {0}", (tvChannel.IsTV ? "Да" : "Нет"));
            }

            streamWriter.Flush();
            return(stream);
        }
Exemplo n.º 11
0
        public Stream DownloadDOCX(TVChannelPackage 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.Channels.Count())));
            section.Blocks.Add(new Paragraph(docx, string.Format("Стоимость в месяц: {0}", item.Price)));
            section.Blocks.Add(new Paragraph(docx, string.Format("Список каналов:")));

            Table table = new Table(docx);

            table.TableFormat.Alignment = HorizontalAlignment.Left;

            TableRow  tableRowHeader         = new TableRow(docx);
            TableCell tableRowCellNameHeader = AddCellToDOCXTable("Название канала", ref docx, ref tableRowHeader);
            TableCell tableRowCellIPTVHeader = AddCellToDOCXTable("Наличие IPTV", ref docx, ref tableRowHeader);
            TableCell tableRowCellTVHeader   = AddCellToDOCXTable("Наличие TV", ref docx, ref tableRowHeader);

            table.Rows.Add(tableRowHeader);

            foreach (TVChannel tvChannel in item.Channels)
            {
                TableRow  tableRow         = new TableRow(docx);
                TableCell tableRowCellName = AddCellToDOCXTable(tvChannel.Name, ref docx, ref tableRow);
                TableCell tableRowCellIPTV = AddCellToDOCXTable((tvChannel.IsIPTV ? "Да" : "Нет"), ref docx, ref tableRow);
                TableCell tableRowCellTV   = AddCellToDOCXTable((tvChannel.IsTV ? "Да" : "Нет"), ref docx, ref tableRow);
                table.Rows.Add(tableRow);
            }
            section.Blocks.Add(table);

            docx.Save(stream, SaveOptions.DocxDefault);
            return(stream);
        }
Exemplo n.º 12
0
        public ActionResult Edit(Guid id)
        {
            TVChannelPackage tvChannelPackage = actions.Get(id);

            return(View(tvChannelPackage));
        }
Exemplo n.º 13
0
        public ActionResult Create()
        {
            TVChannelPackage tvChannelPackage = new TVChannelPackage();

            return(View(tvChannelPackage));
        }