Esempio n. 1
0
        private void CreatePrintFile_Click(object sender, RoutedEventArgs e)
        {
            if (!ValidPrintForm())
            {
                return;
            }
            SendAlbum album;

            try {
                lErrors3.Document.Blocks.Clear();
                album = MyFunctions.GetSendPeoples(tbPathFolderPrint1.Text);
            }
            catch (BadFormatException ex) {
                lErrors3.Document.Blocks.Add(new Paragraph(new Run(ex.Error)));
                return;
            }
            catch (UnknownColumnException ex) {
                lErrors3.Document.Blocks.Add(new Paragraph(new Run("Найден неизвестный столбец")));
                return;
            }
            catch (Exception ex) {
                lErrors3.Document.Blocks.Add(new Paragraph(new Run("Не удалось прочесть файл. Возможно не хватает некоторых полей. " + ex.ToString())));
                return;
            }

            try {
                lErrors3.Document.Blocks.Clear();
                CreatePrintFiles(album, tbPathFolderPrint2.Text, cbFormat.SelectedIndex);
                lErrors3.Document.Blocks.Add(new Paragraph(new Run("Файл сформирован.")));
            }
            catch (BadFormatSafeException ex) {
                lErrors3.Document.Blocks.Add(new Paragraph(new Run("Невозможно сохранить. Возможно файл открыт или неправельно выбран формат Excel.")));
            }
            catch (Exception ex) {
                lErrors3.Document.Blocks.Add(new Paragraph(new Run("Произошла ошибка при создании файла. " + ex.ToString())));
            }
        }
Esempio n. 2
0
        bool ValidForm()
        {
            lErrors.Content = "";
            if (tbPahtFolder.Text.Length == 0)
            {
                lErrors.Content = "Не выбран файл для сохранения.";
                return(false);
            }

            if (cbAlbum.SelectedIndex == -1)
            {
                lErrors.Content = "Не выбран альбом.";
                return(false);
            }

            try {
                string[] splitString = tbDataFrom.Text.Split(new Char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
                if (splitString.Length == 3)
                {
                    TimeFrom = new DateTime(Convert.ToInt32(splitString[2]), Convert.ToInt32(splitString[1]), Convert.ToInt32(splitString[0]));
                }
                else
                {
                    throw new Exception();
                }
            }
            catch {
                lErrors.Content = "Не правильно введена дата, с которой начинается поиск. Формат dd.mm.yyyy";
                return(false);
            }

            try {
                string[] splitString = tbDataTo.Text.Split(new Char[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
                if (splitString.Length == 3)
                {
                    TimeTo = new DateTime(Convert.ToInt32(splitString[2]), Convert.ToInt32(splitString[1]), Convert.ToInt32(splitString[0]), 23, 59, 59);
                }
                else
                {
                    throw new Exception();
                }
            }
            catch {
                lErrors.Content = "Не правильно введена дата, до которой идёт поиск. Формат dd.mm.yyyy";
                return(false);
            }

            if (TimeFrom > TimeTo)
            {
                lErrors.Content = "Дата, до которой идёт поиск, должна быть больше даты начала поиска.";
                return(false);
            }

            if (cbAlbum.SelectedIndex != cbAlbum.Items.Count - 1 && AllAlbums[cbAlbum.SelectedIndex].Size == 0)
            {
                lErrors.Content = "Не возможно сформировать файл. В альбоме нет фотографий.";
                return(false);
            }
            Microsoft.Office.Interop.Excel.Application excel = null;
            try {
                excel               = new Microsoft.Office.Interop.Excel.Application();
                excel.Visible       = false;
                excel.DisplayAlerts = false;
                Workbook worKbooK = excel.Workbooks.Add(Type.Missing);

                if (cbFormat.SelectedIndex == 0 || cbFormat.SelectedIndex == -1)
                {
                    worKbooK.SaveAs(tbPahtFolder.Text, XlFileFormat.xlExcel3);
                }
                else
                {
                    worKbooK.SaveAs(tbPahtFolder.Text);
                }

                worKbooK.Close();
            }
            catch (Exception exc) {
                lErrors.Content = "Не удаётся создать или пересохранить файл. Выберите другое имя.";
                return(false);
            }
            finally {
                IntPtr handle = (IntPtr)excel.Hwnd;
                excel.Quit();
                MyFunctions.TerminateProcess(handle, 1);
            }

            return(true);
        }
Esempio n. 3
0
        private void bCreatFile_Click(object sender, RoutedEventArgs e)
        {
            if (ValidForm() == false)
            {
                return;
            }

            AllCountPhoto = CurrentCountPhoto = 0;
            List <string> NamesAlbums = new List <string>();

            peoples          = new List <List <People> >();
            AllNamePhoto     = new List <List <string> >();
            pbProgress.Value = 0;
            Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { System.Windows.Controls.ProgressBar.ValueProperty, (double)0 });
            try {
                if (cbAlbum.SelectedIndex == cbAlbum.Items.Count - 1)
                {
                    for (int i = 0; i < AllAlbums.Count; i++)
                    {
                        AllCountPhoto = AllCountPhoto + (int)AllAlbums[i].Size;
                    }
                    for (int i = 0; i < AllAlbums.Count; i++)
                    {
                        if (AllAlbums[i].Size != 0)
                        {
                            NamesAlbums.Add(AllAlbums[i].Title);
                            peoples.Add(GetPeopleFromAlbum(i, api));
                        }
                    }
                }
                else
                {
                    AllCountPhoto = (long)AllAlbums[cbAlbum.SelectedIndex].Size;
                    NamesAlbums.Add(AllAlbums[cbAlbum.SelectedIndex].Title);
                    peoples.Add(GetPeopleFromAlbum(cbAlbum.SelectedIndex, api));
                }
            }
            catch (OutOfBorderPhotoException) {
                lErrors.Content = "Выход за границу массива фотографий. Критическая ошибка.";
                return;
            }
            catch (OutOfBorderCommentsException) {
                lErrors.Content = "Выход за границу массива комментариев. Критическая ошибка.";
                return;
            }
            catch (ErrorFindPhotoException exc) {
                lErrors.Content = "Не удалось получить все фотографии из альбома " + exc.TitleAlbum + ". Возможно отсутствует подключение к интернету.";
                return;
            }
            catch (ErrorFindCommentsException exc) {
                lErrors.Content = "Не удалось получить коментарии к фотографии № " + exc.NumberPhoto + " из альбома " + exc.TitleAlbum + ". Возможно отсутствует подключение к интернету.";
                return;
            }
            catch (ErrorFindNameUserException exp) {
                lErrors.Content = "Не удалось получить имена пользователей в альбоме " + exp.TitleAlbum + " . Возможно отсутствует подключение к интернету.";
                return;
            }
            catch (Exception) {
                lErrors.Content = "Критическая ошибка.";
                return;
            }

            try {
                if (cbUseColColum.IsChecked.Value)
                {
                    MyFunctions.WriteExcelFileWithCollum(peoples, NamesAlbums, cbExeptEmptyPhoto.IsChecked.Value, AllNamePhoto, cbFormat.SelectedIndex, tbPahtFolder.Text);
                }
                else
                {
                    MyFunctions.WriteExcelFile(peoples, NamesAlbums, cbExeptEmptyPhoto.IsChecked.Value, AllNamePhoto, cbFormat.SelectedIndex, tbPahtFolder.Text);
                }
            }
            catch (NotCommentException) {
                lErrors.Content = "Файл не был создан, так как не нашлось комментариев для записи.";
                return;
            }
            catch (Exception) {
                lErrors.Content = "Критическая ошибка при сохранении файла.";
                return;
            }

            lErrors.Content = "Файл сформирован.";
        }
Esempio n. 4
0
        public static SendAlbum GetSendPeoples(string FileName)
        {
            SendAlbum album     = new SendAlbum();
            int       line      = 1;
            int       collCount = 4;

            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
            Workbook worKbooK = null;

            excel.Visible       = false;
            excel.DisplayAlerts = false;


            try {
                worKbooK = excel.Workbooks.Open(FileName);
                Worksheet worKsheeT = (Worksheet)worKbooK.ActiveSheet;


                line       = 1;
                album.Name = (string)(worKsheeT.Cells[line, 1] as Microsoft.Office.Interop.Excel.Range).Value;
                album.Name = (album.Name.Split('.').Length == 1) ? album.Name : album.Name.Split('.')[1];
                line       = 2;
                while (true)
                {
                    if (Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value) == "Сумма к оплате")
                    {
                        break;
                    }
                    else if (Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value) != null && Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value) != "")
                    {
                        album.Photos.Add(Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value));
                    }
                    collCount++;
                }
                line = 4;

                while (true)
                {
                    if (Convert.ToString((worKsheeT.Cells[line, 1] as Microsoft.Office.Interop.Excel.Range).Value) == "" || Convert.ToString((worKsheeT.Cells[line, 1] as Microsoft.Office.Interop.Excel.Range).Value) == null)
                    {
                        break;
                    }

                    album.Peoples.Add(new SendPeople());
                    album.Peoples[album.Peoples.Count - 1].Name = (string)(worKsheeT.Cells[line, 2] as Microsoft.Office.Interop.Excel.Range).Value;
                    album.Peoples[album.Peoples.Count - 1].Id   = Convert.ToInt64((worKsheeT.Cells[line, 3] as Microsoft.Office.Interop.Excel.Range).Value);
                    collCount = 4;
                    SendProduct buffItem   = new SendProduct();
                    bool        breakwhile = true;
                    while (breakwhile)
                    {
                        if (Convert.ToString((worKsheeT.Cells[3, collCount] as Microsoft.Office.Interop.Excel.Range).Value) == "" || Convert.ToString((worKsheeT.Cells[3, collCount] as Microsoft.Office.Interop.Excel.Range).Value) == null)
                        {
                            if (Convert.ToString((worKsheeT.Cells[2, collCount] as Microsoft.Office.Interop.Excel.Range).Value) == "Сумма к оплате")
                            {
                                album.Peoples[album.Peoples.Count - 1].AllCost = Convert.ToDouble((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value);
                            }
                            break;
                        }

                        switch ((string)(worKsheeT.Cells[3, collCount] as Microsoft.Office.Interop.Excel.Range).Value)
                        {
                        case "Комментарии":
                            buffItem.Name = Convert.ToString((worKsheeT.Cells[2, collCount] as Microsoft.Office.Interop.Excel.Range).Value);
                            break;

                        case "Размерность":
                            album.isUseSize = true;
                            buffItem.Size   = Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value);
                            break;

                        case "Кол-во":
                            buffItem.Count = Convert.ToDouble((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value);
                            break;

                        case "Цена":
                            buffItem.Cost = Convert.ToDouble((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value);

                            if (buffItem != null && buffItem.Count != 0 && buffItem.Cost != 0)
                            {
                                album.Peoples[album.Peoples.Count - 1].Product.Add(buffItem);
                            }
                            if (buffItem != null && buffItem.Count != 0 && buffItem.Cost == 0)
                            {
                                throw new BadFormatException("Поле Цена незаполнено");
                            }
                            buffItem = new SendProduct();
                            break;

                        default:
                            throw new UnknownColumnException();
                        }
                        collCount++;
                    }
                    line++;
                }

                for (int i = 0; i < album.Peoples.Count; i++)
                {
                    if (album.Peoples[i].Product.Count == 0)
                    {
                        album.Peoples.RemoveAt(i);
                        i = i - 1;
                    }
                }
            }
            catch (Exception ex) {
                throw ex;
            }
            finally {
                IntPtr handle = (IntPtr)excel.Hwnd;
                worKbooK.Close();
                excel.Quit();
                MyFunctions.TerminateProcess(handle, 1);
            }

            return(album);
        }
Esempio n. 5
0
        private void bResiveMessage_Click(object sender, RoutedEventArgs e)
        {
            if (!ValidForm2())
            {
                return;
            }

            SendAlbum album;

            //Формирование списка людей
            try {
                lErrors2.Document.Blocks.Clear();
                album = MyFunctions.GetSendPeoples(tbPathFolder2.Text);
            }
            catch (BadFormatException ex) {
                lErrors2.Document.Blocks.Add(new Paragraph(new Run(ex.Error)));
                return;
            }
            catch (UnknownColumnException ex) {
                lErrors2.Document.Blocks.Add(new Paragraph(new Run("Найден неизвестный столбец")));
                return;
            }
            catch (Exception ex) {
                lErrors2.Document.Blocks.Add(new Paragraph(new Run("Не удалось прочесть файл. Возможно не хватает некоторых полей.")));
                return;
            }

            //Авторатизация в vk
            var api2 = new VkApi();

            if (!api2.IsAuthorized)
            {
                try {
                    api2.Authorize(new ApiAuthParams {
                        ApplicationId = 5539924,
                        //Login = ULogin,
                        //Login = ALogin,

                        //Password = UserPassword,
                        //Password = AntonPassword,

                        AccessToken = "c2d23fe54097f46ea81f8103efd840bc5ca545408c14ee8873c9ee83711d123ca2d5a049f57b774028dfd",
                        Settings    = Settings.All
                    });
                }
                catch (Exception ex) {
                    lErrors2.Document.Blocks.Clear();
                    lErrors2.Document.Blocks.Add(new Paragraph(new Run("Не удалось авторитизироваться в VK. Возможно нет подключения к интеренту. " + ex.ToString())));
                    //lErrors2.Content = "Не удалось авторитизироваться в VK. Возможно нет подключения к интеренту.";
                    return;
                }
            }
            //lErrors2.Content = "";
            //Формирование и отправка сообщений
            for (int i = 0; i < album.Peoples.Count; i++)
            {
                string Message = new TextRange(rtbTextArea.Document.ContentStart, rtbTextArea.Document.ContentEnd).Text;
                Message = Message.Replace("{имя}", album.Peoples[i].Name);

                if (rbChouse1.IsChecked == true)
                {
                    Message = Message.Replace("{стоимость}", album.Peoples[i].AllCost.ToString());
                    Message = Message.Replace("{альбом}", album.Name);
                    string listProduct = "";
                    for (int j = 0; j < album.Peoples[i].Product.Count; j++)
                    {
                        listProduct = listProduct + (j + 1) + ". " + album.Peoples[i].Product[j].Name + ((album.Peoples[i].Product[j].Size == "") ? "" : " " + album.Peoples[i].Product[j].Size + " ") + ": " + album.Peoples[i].Product[j].Count + " шт * " + album.Peoples[i].Product[j].Cost + " руб = " + album.Peoples[i].Product[j].Count * album.Peoples[i].Product[j].Cost + " руб.\n";
                    }
                    Message = Message.Replace("{список}", listProduct);
                }


                long?  captcha_sid = null;
                string captcha_key = null;
                Random prob1       = new Random();

                for (int j = 0; j < 10; j++)
                {
                    try {
                        api2.Messages.Send(new MessagesSendParams {
                            UserId = album.Peoples[i].Id, Message = Message, CaptchaSid = captcha_sid, CaptchaKey = captcha_key, RandomId = prob1.Next()
                        });
                        break;
                    }
                    catch (CaptchaNeededException ex) {
                        CaptchaForm prob = new CaptchaForm(ex.Img, "Сообщение № " + i);
                        prob.ShowDialog();
                        captcha_sid = ex.Sid;
                        captcha_key = prob.CaptchaKey;
                        if (j == 9)
                        {
                            throw new Exception();
                        }
                    }
                    catch (Exception exc) {
                        lErrors2.Document.Blocks.Add(new Paragraph(new Run("Не удалось отправить сообщение покупателю " + album.Peoples[i].Name + ".")));
                        if (exc.Message == "Can't send messages for users without permission")
                        {
                            lErrors2.Document.Blocks.Add(new Paragraph(new Run("У пользователя запрещены сообщения от группы.")));
                        }
                        lErrors2.Document.Blocks.Add(new Paragraph(new Run(exc.ToString())));
                        //lErrors2.Content = lErrors2.Content + "Не удалось отправить сообщение покупателю " + peoples[i].Name + ". " + exc.ToString();
                        break;
                    }
                }
            }


            if (new TextRange(lErrors2.Document.ContentStart, lErrors2.Document.ContentEnd).Text == "")
            {
                lErrors2.Document.Blocks.Clear();
                lErrors2.Document.Blocks.Add(new Paragraph(new Run("Сообщения отправлены.")));
                //lErrors2.Content = "Сообщения отправлены.";
            }
        }
Esempio n. 6
0
        private void CreatePrintFiles(SendAlbum album, String NameFile, int Format)
        {
            int line = 1;

            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
            excel.Visible       = false;
            excel.DisplayAlerts = false;
            Workbook  worKbooK  = excel.Workbooks.Add(Type.Missing);
            Worksheet worKsheeT = (Worksheet)worKbooK.ActiveSheet;

            worKsheeT.Name = "SoapOperaPrint";
            try {
                line = 1;
                worKsheeT.Cells[line, 1] = album.Name;

                line = 2;
                worKsheeT.Cells[line, 1] = "№";
                worKsheeT.Cells[line, 2] = "Участник";

                if (album.isUseSize)
                {
                    for (int i = 3; i < album.Photos.Count * 2 + 3; i = i + 2)
                    {
                        worKsheeT.Cells[line, i]             = album.Photos[(i - 3) / 2];
                        worKsheeT.Cells[line, i].Orientation = 90;
                    }
                }
                else
                {
                    for (int i = 3; i < album.Photos.Count + 3; i++)
                    {
                        worKsheeT.Cells[line, i]             = album.Photos[i - 3];
                        worKsheeT.Cells[line, i].Orientation = 90;
                    }
                }


                line = 3;
                for (int i = 0; i < album.Peoples.Count; i++)
                {
                    worKsheeT.Cells[line, 1] = (i + 1);
                    worKsheeT.Cells[line, 2] = album.Peoples[i].Name;
                    for (int j = 0; j < album.Peoples[i].Product.Count; j++)
                    {
                        for (int k = 0; k < album.Photos.Count; k++)
                        {
                            if (album.Peoples[i].Product[j].Name == album.Photos[k])
                            {
                                if (album.isUseSize)
                                {
                                    worKsheeT.Cells[line, 3 + k * 2]     = album.Peoples[i].Product[j].Size;
                                    worKsheeT.Cells[line, 3 + k * 2 + 1] = album.Peoples[i].Product[j].Count;
                                }
                                else
                                {
                                    worKsheeT.Cells[line, 3 + k] = album.Peoples[i].Product[j].Count;
                                }
                            }
                        }
                    }
                    line++;
                }

                int countCollum = 0;
                if (album.isUseSize)
                {
                    countCollum = 2 + album.Photos.Count * 2;
                }
                else
                {
                    countCollum = 2 + album.Photos.Count;
                }

                Microsoft.Office.Interop.Excel.Borders border = worKsheeT.Range[worKsheeT.Cells[2, 1], worKsheeT.Cells[line - 1, countCollum]].Borders;
                border.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
                border.Weight    = 2d;


                Microsoft.Office.Interop.Excel.Range usedrange = worKsheeT.Range[worKsheeT.Cells[1, 1], worKsheeT.Cells[line - 1, countCollum]];
                usedrange.Rows.AutoFit();
                usedrange.Columns.AutoFit();

                try {
                    if (Format <= 0)
                    {
                        worKbooK.SaveAs(NameFile, XlFileFormat.xlExcel3);
                    }
                    else
                    {
                        worKbooK.SaveAs(NameFile);
                    }
                }
                catch (Exception ex2) {
                    throw new BadFormatSafeException();
                }
                worKbooK.Close();
            }
            catch (Exception ex) {
                throw ex;
            }
            finally {
                IntPtr handle = (IntPtr)excel.Hwnd;
                excel.Quit();
                MyFunctions.TerminateProcess(handle, 1);
            }
        }