Ejemplo n.º 1
0
        public CalendarioMesViewModel(Page page, int mes) : this()
        {
            montaGrid(page, mes);
            TapAvancar = new Command(() =>
            {
                CurrentMes = CurrentMes.AddMonths(1);
                montaGrid(page, CurrentMes.Month);
            });

            TapRetroceder = new Command(() =>
            {
                CurrentMes = CurrentMes.AddMonths(-1);
                montaGrid(page, CurrentMes.Month);
            });

            //Command do scroll
            //ScrollCommand = new Command(async () =>
            //{

            //    //parent.DisplayAlert("OK", "OK", "OK");
            //    MessagingCenter.Send<CalendarioMesViewModel>(this, "ScrollCalendar");

            //});
        }
Ejemplo n.º 2
0
        void montaGrid(Page page, int mes)
        {
            var Meses       = CurrentMes.AddMonths(-1);
            var mesAnterior = montaCalendario(Convert.ToInt32(Meses.Month)).Length;

            //MainPage para usar elementos do xaml sem usar Mensageria
            parent = page;
            //monta o vetor com quantos dias tem no mes.
            var a = montaCalendario(mes);
            //exibe o nome completo do mes atual
            var nomeMes = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Convert.ToInt32(mes));

            TextoMes = nomeMes + " " + CurrentMes.Year;
            CalendarioGridModel.Clear();
            //Pega o dia da semana que começa o mes
            Days diaCOmecaMes = DiaSemanaComecaMes(mes);
            int  b = 1;
            int  i = 0, contCasasMesAnterior = 0, colunaMesAnterior = 0, controlador = 0;

            for (int linhas = 0; linhas < 6; linhas++)
            {
                for (int colunas = 0; colunas < 7; colunas++)
                {
                    if (i < a.Length)
                    {
                        CellModel dia = new CellModel()
                        {
                            Coluna = colunas,
                            Linha  = linhas,
                            Dia    = new DateTime(CurrentMes.Year, CurrentMes.Month, a[i]),
                            dados  = new DadosDia()
                            {
                                DiaValor    = a[i].ToString(),
                                DiaDaSemana = verificadia(colunas)
                            },
                            BackgroundColor = Color.DeepSkyBlue,
                            TextColor       = Color.White
                        };
                        //nomeMes + " " + CurrentMes.Year
                        dia.TapCommand = new Command(() => { TextoMes = nomeMes + " " + CurrentMes.Year; });
                        //Monta a primeira linha do grid
                        if (linhas == 0)
                        {
                            //Verifica se o dia 1 é igual ao dia que começa o mes
                            //Coluna 1 = Segunda, diaCOmecaMes se for terça é = 2 então ñ entrara na condição
                            if (dia.dados.DiaDaSemana >= diaCOmecaMes)
                            {
                                //Tirando sabado e domingo
                                if (dia.dados.DiaDaSemana != Days.Domingo && dia.dados.DiaDaSemana != Days.Sabado)
                                {
                                    CalendarioGridModel.Add(dia);
                                    i++;
                                }
                                else
                                {
                                    //Sabado e domingo
                                    CalendarioGridModel.Add(new CellModel()
                                    {
                                        Coluna = colunas,
                                        Linha  = linhas,
                                        Dia    = new DateTime(CurrentMes.Year, CurrentMes.Month, CurrentMes.Day)
                                        {
                                        },
                                        dados = new DadosDia()
                                        {
                                            DiaValor = a[i].ToString()
                                        },
                                        BackgroundColor = Color.White,
                                        TextColor       = Color.Black,
                                        TapCommand      = new Command(() => { TextoMes = nomeMes + " " + CurrentMes.Year; })
                                    });
                                    i++;
                                }
                            }
                            else
                            {
                                /******* MES ANTERIOR *****/
                                contCasasMesAnterior += 1;
                                colunaMesAnterior    += 1;
                                controlador          += 1;
                            }
                            if (linhas == 0 && dia.dados.DiaDaSemana >= diaCOmecaMes && controlador != 0)
                            {
                                var teste = contCasasMesAnterior;
                                /*Primeira Linha mes anterior */
                                for (int casasEmBranco = 0; casasEmBranco < teste; casasEmBranco++)
                                {
                                    CalendarioGridModel.Add(new CellModel()
                                    {
                                        Coluna = (teste - 1) - casasEmBranco,
                                        Linha  = 0,
                                        Dia    = new DateTime(CurrentMes.Year, CurrentMes.Month, CurrentMes.Day),
                                        dados  = new DadosDia()
                                        {
                                            DiaValor = mesAnterior.ToString()
                                        },
                                        BackgroundColor = Color.White,
                                        TextColor       = Color.Gray,
                                        TapCommand      = new Command(() =>
                                        {
                                            TextoMes   = nomeMes + " " + CurrentMes.Year;
                                            CurrentMes = CurrentMes.AddMonths(-1);
                                            montaGrid(page, CurrentMes.Month);
                                        })
                                    });
                                    colunaMesAnterior--;
                                    mesAnterior--;
                                    controlador--;
                                }
                            }
                        }
                        else
                        {
                            /**Talvez precisa tirar a lógica de sabado e domingo porque a cor da celular é de acordo se o médico tem plantão ou não
                             * BackGround Azul é escala e Amarelo é plantão */
                            //Restante do calendario apos a primeira linha do grid.
                            if (dia.dados.DiaDaSemana != Days.Domingo && dia.dados.DiaDaSemana != Days.Sabado)
                            {
                                //Dias tirando sabado e domingo
                                CalendarioGridModel.Add(dia);
                                i++;
                            }
                            else
                            {
                                //Sabado e domingo
                                CalendarioGridModel.Add(new CellModel()
                                {
                                    Coluna = colunas,
                                    Linha  = linhas,
                                    Dia    = new DateTime(CurrentMes.Year, CurrentMes.Month, CurrentMes.Day)
                                    {
                                    },
                                    dados = new DadosDia()
                                    {
                                        DiaValor = a[i].ToString()
                                    },
                                    BackgroundColor = Color.White,
                                    TextColor       = Color.Black,
                                    TapCommand      = new Command(() => { TextoMes = nomeMes + " " + CurrentMes.Year; })
                                });
                                i++;
                            }
                        }
                    }
                    else
                    {
                        /********** MES SEGUINTE **********/
                        CellModel dia = new CellModel()
                        {
                            Coluna = colunas,
                            Linha  = linhas,
                            Dia    = new DateTime(CurrentMes.Year, CurrentMes.Month, CurrentMes.Day),
                            dados  = new DadosDia()
                            {
                                DiaValor    = b.ToString(),
                                DiaDaSemana = verificadia(colunas)
                            },
                            TextColor = Color.Gray
                        };


                        dia.TapCommand = new Command(async() =>
                        {
                            CurrentMes = CurrentMes.AddMonths(1);
                            TextoMes   = nomeMes + " " + CurrentMes.Year;
                            montaGrid(page, CurrentMes.Month);
                            //dia.dados.DiaValor.ToString() + "/" + CurrentMes.Month.ToString() + "/" + CurrentMes.Year.ToString();
                        });
                        CalendarioGridModel.Add(dia);
                        b++;
                    }
                }
            }
        }