public void AddDAY(Dia dia) { if (CurrentMonth == null) { CurrentMonth = dia.Mes; CurrentMes = new Mes() { Dias = new List <Dia>(), Name = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dia.Mes) }; } if (CurrentMonth.Value == dia.Mes) { CurrentMes.AddDay(dia); } else { diastomar.Add(CurrentMes); CurrentMonth = dia.Mes; CurrentMes = new Mes() { Dias = new List <Dia>(), Name = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dia.Mes) }; CurrentMes.AddDay(dia); } }
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"); //}); }
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++; } } } }