public Spreadsheet CreateSpreadSheet(GoogleCredentials googleCredentials, System.Security.Claims.ClaimsPrincipal user, CreateRequest createRequest)
        {
            UserCredential credential;
            var            userMail = user.Claims.FirstOrDefault(claim => claim.Value.Contains("@"))?.Value ?? "user";

            using (var stream =
                       new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
            {
                var credPath = "token.json";
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    _scopes,
                    userMail,
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
            }

            // Create Google Sheets API service.
            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = "creatingcompetitionlists",
            });

            var myNewSheet = new Spreadsheet
            {
                Properties = new SpreadsheetProperties {
                    Title = createRequest.TableName
                },
                Sheets = new List <Sheet> {
                    new Sheet {
                        Properties = new SheetProperties {
                            Title = "БАЗА"
                        }
                    }
                }
            };

            foreach (var directionId in createRequest.DirectionIds.Select(int.Parse))
            {
                using var db = new competition_listContext();
                myNewSheet.Sheets.Add(new Sheet {
                    Properties = new SheetProperties {
                        Title = db.Directions.FirstOrDefault(x => x.Id == directionId)?.ShortTitle
                    }
                });
            }
            myNewSheet.Sheets.Add(new Sheet {
                Properties = new SheetProperties {
                    Title = "ЧИСЛО МЕСТ"
                }
            });

            return(service.Spreadsheets.Create(myNewSheet).Execute());
        }
 public List <Faculty> GetFaculties()
 {
     using var db = new competition_listContext();
     return(db.Faculties.ToList());
 }
 public List <Direction> GetDirections()
 {
     using var db = new competition_listContext();
     return(db.Directions.ToList());
 }
Esempio n. 4
0
        public void FillSpreadsheet(Spreadsheet spreadsheet,
                                    System.Security.Claims.ClaimsPrincipal user,
                                    List <string> directions, int countWave, int possibleDirections)
        {
            var columnAfterDirection = GetNumberByLetter(_startDirectionColumn) + directions.Count;

            _originalColumn   = GetLetterByNumber(columnAfterDirection + 1);
            _predictionColumn = GetLetterByNumber(GetNumberByLetter(_originalColumn) + 1);
            _enrolledOnColumn = GetLetterByNumber(GetNumberByLetter(_predictionColumn) + 1);
            _commentColumn    = GetLetterByNumber(GetNumberByLetter(_enrolledOnColumn) + 1);
            _phoneColumn      = GetLetterByNumber(GetNumberByLetter(_commentColumn) + 1);
            var spreadsheetId = spreadsheet.SpreadsheetId;
            var startValues   = new List <object>
            {
                "№", "ФИО", "СНИЛС", "Преимущ. право", "Сумма баллов", "Вид документа об образовании",
                "Согласие на зачисление"
            };

            for (int i = 1; i <= directions.Count; i++)
            {
                startValues.Add("Н_" + i);
            }

            startValues.Add("Оригинал");
            startValues.Add("Прогноз");
            startValues.Add("Зачислен НА");
            startValues.Add("Комментарий");
            startValues.Add("Телефон");
            var baseValues = new List <object>
            {
                "Прогноз (зачислен (Ц, ОП, 1 волна), ДА, НЕТ)", "Комментарий", "ЕГЭ", "Номер", "ФИО"
            };

            for (var i = 1; i <= possibleDirections; i++)
            {
                baseValues.Add("Н_" + i);
            }

            baseValues.Add("Оригинал");
            baseValues.Add("Русский язык");
            baseValues.Add("Математика");
            baseValues.Add("География");
            baseValues.Add("Биология");
            baseValues.Add("История");
            baseValues.Add("Об-во");
            baseValues.Add("Химия");
            baseValues.Add("Физика");
            baseValues.Add("Литература");
            baseValues.Add("Английский язык");
            baseValues.Add("Французский язык");
            baseValues.Add("Немецкий язык");
            baseValues.Add("");
            baseValues.Add("ИКТ");
            baseValues.Add("Телефон");
            baseValues.Add("E-mail");
            baseValues.Add("Адрес по прописке");
            baseValues.Add("Общежитие");
            baseValues.Add("Зачислен НА");

            var headValues = new RowData {
                Values = new List <CellData>()
            };
            var baseHeadValues = new RowData {
                Values = new List <CellData>()
            };
            var columns = new List <SpreadsheetColumn>();

            for (var i = 0; i < startValues.Count; i++)
            {
                headValues.Values.Add(new CellData {
                    UserEnteredValue = new ExtendedValue {
                        StringValue = startValues[i].ToString()
                    }
                });
                columns.Add(new SpreadsheetColumn {
                    HeadName = startValues[i].ToString(), Column = GetLetterByNumber(i + 1)
                });
            }

            foreach (var baseValue in baseValues)
            {
                baseHeadValues.Values.Add(new CellData {
                    UserEnteredValue = new ExtendedValue {
                        StringValue = baseValue.ToString()
                    }
                });
            }


            foreach (var sheet in spreadsheet.Sheets)
            {
                var valueRange   = new ValueRange();
                var simpleBorder = new Border {
                    Style = "SOLID", Color = new Color {
                        Blue = 0, Green = 0, Red = 0
                    }
                };
                var     rows = new List <RowData>();
                Request updateRequest;
                Request repeatRequest;
                Request appendRequest;
                BatchUpdateSpreadsheetRequest           bussr;
                SpreadsheetsResource.BatchUpdateRequest bur;
                var userEnteredFormat = new CellFormat
                {
                    Borders = new Borders
                    {
                        Bottom = simpleBorder,
                        Top    = simpleBorder,
                        Left   = simpleBorder,
                        Right  = simpleBorder
                    }
                };
                switch (sheet.Properties.Title)
                {
                case "БАЗА":
                    rows = new List <RowData>();
                    rows.Add(baseHeadValues);
                    SetBaseFormula(rows);
                    updateRequest = new Request
                    {
                        UpdateCells = new UpdateCellsRequest
                        {
                            Range = new GridRange
                            {
                                SheetId          = sheet.Properties.SheetId,
                                StartColumnIndex = 0,
                                StartRowIndex    = 0,
                                EndColumnIndex   = baseHeadValues.Values.Count,
                                EndRowIndex      = 900
                            },
                            Rows   = rows,
                            Fields = "UserEnteredValue"
                        }
                    };
                    appendRequest = new Request()
                    {
                        AppendDimension = new AppendDimensionRequest()
                        {
                            SheetId   = sheet.Properties.SheetId,
                            Dimension = "COLUMNS",
                            Length    = 50
                        }
                    };
                    repeatRequest = new Request
                    {
                        RepeatCell = new RepeatCellRequest
                        {
                            Range = new GridRange
                            {
                                SheetId          = sheet.Properties.SheetId,
                                StartColumnIndex = 0,
                                StartRowIndex    = 0,
                                EndColumnIndex   = baseHeadValues.Values.Count,
                                EndRowIndex      = 900
                            },
                            Cell = new CellData
                            {
                                UserEnteredFormat = userEnteredFormat
                            },

                            Fields = "UserEnteredFormat(Borders)"
                        }
                    };
                    bussr          = new BatchUpdateSpreadsheetRequest();
                    bussr.Requests = new List <Request>();
                    bussr.Requests.Add(appendRequest);
                    bussr.Requests.Add(updateRequest);
                    bussr.Requests.Add(repeatRequest);
                    bur = Service(user).Spreadsheets.BatchUpdate(bussr, spreadsheet.SpreadsheetId);
                    bur.Execute();
                    break;

                case "ЧИСЛО МЕСТ":
                    rows = new List <RowData>();
                    var placesColumns = new Dictionary <string, string>();
                    placesColumns.Add("A", "КЦП");
                    placesColumns.Add("B", DateTime.Today.Year.ToString());
                    placesColumns.Add("C", "Целевики");
                    placesColumns.Add("D", "Особые права");
                    placesColumns.Add("E", "Число мест на 1 волну");
                    placesColumns.Add("F", "Проходной балл");
                    if (countWave == 2)
                    {
                        placesColumns.Add("G", "Число мест на 2 волну");
                        placesColumns.Add("H", "Проходной балл");
                    }

                    var placesHeadRow = new RowData {
                        Values = new List <CellData>()
                    };
                    placesColumns.Values.ToList().ForEach(x =>
                                                          placesHeadRow.Values.Add(new CellData {
                        UserEnteredValue = new ExtendedValue {
                            StringValue = x
                        }
                    }));
                    rows.Add(placesHeadRow);
                    foreach (var direction in directions)
                    {
                        using var db = new competition_listContext();
                        var directionDb = db.Directions.FirstOrDefault(x => x.Id.Equals(int.Parse(direction)));
                        var placesRow   = new RowData {
                            Values = new List <CellData>()
                        };
                        placesRow.Values.Add(new CellData {
                            UserEnteredValue = new ExtendedValue {
                                StringValue = directionDb.CountForEnrollee.Value.ToString()
                            }
                        });
                        placesRow.Values.Add(new CellData {
                            UserEnteredValue = new ExtendedValue {
                                StringValue = directionDb.ShortTitle
                            }
                        });
                        placesRow.Values.Add(new CellData {
                            UserEnteredValue = new ExtendedValue {
                                NumberValue = 0
                            }
                        });
                        placesRow.Values.Add(new CellData {
                            UserEnteredValue = new ExtendedValue {
                                NumberValue = 0
                            }
                        });
                        if (countWave == 1)
                        {
                            placesRow.Values.Add(new CellData {
                                UserEnteredValue = new ExtendedValue {
                                    StringValue = directionDb.CountForEnrollee.Value.ToString()
                                }
                            });
                            placesRow.Values.Add(new CellData {
                                UserEnteredValue = new ExtendedValue {
                                    StringValue = ""
                                }
                            });
                        }
                        else
                        {
                            placesRow.Values.Add(new CellData {
                                UserEnteredValue = new ExtendedValue {
                                    StringValue = (directionDb.CountForEnrollee.Value * 0.8).ToString()
                                }
                            });
                            placesRow.Values.Add(new CellData {
                                UserEnteredValue = new ExtendedValue {
                                    StringValue = ""
                                }
                            });
                            placesRow.Values.Add(new CellData {
                                UserEnteredValue = new ExtendedValue {
                                    StringValue = (directionDb.CountForEnrollee.Value * 0.2).ToString()
                                }
                            });
                            placesRow.Values.Add(new CellData {
                                UserEnteredValue = new ExtendedValue {
                                    StringValue = ""
                                }
                            });
                        }
                        rows.Add(placesRow);
                    }
                    updateRequest = new Request
                    {
                        UpdateCells = new UpdateCellsRequest
                        {
                            Range = new GridRange
                            {
                                SheetId          = sheet.Properties.SheetId,
                                StartColumnIndex = 0,
                                StartRowIndex    = 0,
                                EndColumnIndex   = placesColumns.Count,
                                EndRowIndex      = directions.Count + 1
                            },
                            Rows   = rows,
                            Fields = "UserEnteredValue"
                        }
                    };
                    repeatRequest = new Request
                    {
                        RepeatCell = new RepeatCellRequest
                        {
                            Range = new GridRange
                            {
                                SheetId          = sheet.Properties.SheetId,
                                StartColumnIndex = 0,
                                StartRowIndex    = 0,
                                EndColumnIndex   = placesColumns.Count,
                                EndRowIndex      = directions.Count + 1
                            },
                            Cell = new CellData
                            {
                                UserEnteredFormat = userEnteredFormat
                            },

                            Fields = "UserEnteredFormat(Borders)"
                        }
                    };

                    bussr          = new BatchUpdateSpreadsheetRequest();
                    bussr.Requests = new List <Request>();
                    bussr.Requests.Add(updateRequest);
                    bussr.Requests.Add(repeatRequest);
                    bur = Service(user).Spreadsheets.BatchUpdate(bussr, spreadsheet.SpreadsheetId);
                    bur.Execute();
                    break;

                default:
                    rows = new List <RowData>();
                    rows.Add(headValues);
                    SetFormulas(columns, sheet.Properties.Title, rows);
                    updateRequest = new Request
                    {
                        UpdateCells = new UpdateCellsRequest
                        {
                            Range = new GridRange
                            {
                                SheetId          = sheet.Properties.SheetId,
                                StartColumnIndex = 0,
                                StartRowIndex    = 15,
                                EndColumnIndex   = columns.Count,
                                EndRowIndex      = 900
                            },
                            Rows   = rows,
                            Fields = "UserEnteredValue"
                        }
                    };
                    repeatRequest = new Request
                    {
                        RepeatCell = new RepeatCellRequest
                        {
                            Range = new GridRange
                            {
                                SheetId          = sheet.Properties.SheetId,
                                StartColumnIndex = 0,
                                StartRowIndex    = 15,
                                EndColumnIndex   = columns.Count,
                                EndRowIndex      = 900
                            },
                            Cell = new CellData
                            {
                                UserEnteredFormat = userEnteredFormat
                            },

                            Fields = "UserEnteredFormat(Borders)"
                        }
                    };
                    bussr          = new BatchUpdateSpreadsheetRequest();
                    bussr.Requests = new List <Request>();
                    bussr.Requests.Add(updateRequest);
                    bussr.Requests.Add(repeatRequest);
                    bur = Service(user).Spreadsheets.BatchUpdate(bussr, spreadsheet.SpreadsheetId);
                    bur.Execute();
                    break;
                }
            }
        }
Esempio n. 5
0
 public CreateFormData()
 {
     using var db = new competition_listContext();
     _faculties   = db.Faculties.ToList();
     _directions  = db.Directions.ToList();
 }