private async Task <KeypadModel> FixButtonsAsync(long stateId, object myObject) { var keypad = new KeypadModel(); if (stateId == 1) { var isCompleted = true; keypad = await GetKeypadAsync(1); var info = (GroupEntity)myObject; if (!string.IsNullOrEmpty(info.CenterName)) { SetImage(keypad, "centerName"); } else { isCompleted = false; } if (info.CenterType.HasValue) { SetImage(keypad, "centerType"); SetDefaultValue(keypad, "centerType", info.CenterType.GetEnumValue()); } else { isCompleted = false; } if (info.CenterGenderType.HasValue) { SetImage(keypad, "gender"); SetDefaultValue(keypad, "gender", info.CenterGenderType.GetEnumValue()); } else { isCompleted = false; } if (!string.IsNullOrEmpty(info.ProvinceName)) { SetImage(keypad, "province"); } else { isCompleted = false; } if (!string.IsNullOrEmpty(info.Address)) { SetImage(keypad, "address"); } else { isCompleted = false; } if (!string.IsNullOrEmpty(info.PostalCode)) { SetImage(keypad, "postalCode"); } else { isCompleted = false; } if (!string.IsNullOrEmpty(info.Phone)) { SetImage(keypad, "phone"); } else { isCompleted = false; } if (!string.IsNullOrEmpty(info.ManagerName)) { SetImage(keypad, "managerName"); } else { isCompleted = false; } if (!isCompleted) { SetAlert(keypad, "1-continue"); } } if (stateId == 2) { var isCompleted = true; keypad = await GetKeypadAsync(2); var info = (GroupEntity)myObject; if (!string.IsNullOrEmpty(info.SupervisorName)) { SetImage(keypad, "supervisorName"); } else { isCompleted = false; } if (!string.IsNullOrEmpty(info.SupervisorMobile)) { SetImage(keypad, "supervisorMobile"); } else { isCompleted = false; } if (!string.IsNullOrEmpty(info.SupervisorEmail)) { SetImage(keypad, "supervisorEmail"); } else { isCompleted = false; } if (!isCompleted) { SetAlert(keypad, "2-continue"); } } if (stateId == 3) { var isCompleted = true; keypad = await GetKeypadAsync(3); var info = (GroupEntity)myObject; if (!string.IsNullOrEmpty(info.ProjectSubject)) { SetImage(keypad, "subject"); } else { isCompleted = false; } if (!string.IsNullOrEmpty(info.AxTitle)) { SetImage(keypad, "axes"); } else { isCompleted = false; SetAlert(keypad, "field", Messages.AxRequired); } if (!string.IsNullOrEmpty(info.FieldTitle)) { SetImage(keypad, "field"); } else { isCompleted = false; SetAlert(keypad, "major", Messages.FieldRequired); } if (!string.IsNullOrEmpty(info.MajorTitle)) { SetImage(keypad, "major"); } else { isCompleted = false; } if (info.MembersCount.HasValue) { SetImage(keypad, "membersCount"); SetDefaultValue(keypad, "membersCount", info.MembersCount + ""); } else { isCompleted = false; } if (!isCompleted) { SetAlert(keypad, "3-continue"); } } if (stateId == 4) { var info = (GroupEntity)myObject; keypad = new KeypadModel { Rows = new List <KeypadRowModel>() }; var members = await _groupService.GetMembers(info.ChatId, info.Id); await AddExtraKeypadAsync(keypad, 40); for (int i = 1; i <= info.MembersCount; i = i + 1) { var row = new KeypadRowModel { Buttons = new List <ButtonModel>() }; var currentMember = members.FirstOrDefault(x => x.MemberNumber == i); var button1 = new ButtonModel { Id = "memberName" + i, Type = ButtonTypeEnum.Textbox, BehaviourType = BehaviourType, ButtonTextBox = new ButtonTextBoxModel { LineType = ButttenTextBoxLineEnum.SingleLine, KeypadType = ButttenTextBoxKeypadEnum.String, }, ButtonView = new ButtonSimpleModel { Type = ButtonSimpleTypeEnum.TextOnly, ImageUrl = null, Text = (currentMember != null && !string.IsNullOrEmpty(currentMember.Name)) ? currentMember.Name : "نام و نام خانوادگی عضو " + i, } }; row.Buttons.Add(button1); var button2 = new ButtonModel { Id = "memberNationalCode" + i, Type = ButtonTypeEnum.Textbox, BehaviourType = BehaviourType, ButtonTextBox = new ButtonTextBoxModel { LineType = ButttenTextBoxLineEnum.SingleLine, KeypadType = ButttenTextBoxKeypadEnum.Number, }, ButtonView = new ButtonSimpleModel { Type = ButtonSimpleTypeEnum.TextOnly, ImageUrl = null, Text = (currentMember != null && !string.IsNullOrEmpty(currentMember.NationalCode)) ? currentMember.NationalCode : "کد ملی عضو " + i, } }; row.Buttons.Add(button2); keypad.Rows.Add(row); if (currentMember != null && !string.IsNullOrEmpty(currentMember.Name)) { SetImage(keypad, button1.Id); } if (currentMember != null && !string.IsNullOrEmpty(currentMember.NationalCode)) { SetImage(keypad, button2.Id); } } await AddExtraKeypadAsync(keypad, 4); if (info.MembersGrade.HasValue) { SetImage(keypad, "grade"); SetDefaultValue(keypad, "grade", info.MembersGrade.GetEnumValue()); } if (!info.MembersGrade.HasValue || members.Count() < info.MembersCount || members.Any(x => string.IsNullOrEmpty(x.NationalCode) || string.IsNullOrEmpty(x.Name))) { SetAlert(keypad, "4-continue"); } } if (stateId == 5) { keypad = await GetKeypadAsync(5); var info = (GroupEntity)myObject; var order = await _orderService.AddPayment(info.ChatId, PaymentTypeEnum.Payment, info.Price, Variables.PlanId); var paymentRequestInput = new PaymentRequestInput { ChatId = info.ChatId, OrderId = order.Id.ToString(), Type = PaymentTypeEnum.Payment, Options = new PaymentOptions { Amount = info.Price, PlanId = "" + Variables.PlanId, } }; var output = await _messengerService.PaymentRequest(paymentRequestInput); await _orderService.UpdatePaymentToken(order.Id, output.Data.PaymentToken); var button = GetButton(keypad, "payment"); button.ButtonPayment = new ButtonPayment { ButtonPaymentToken = output.Data.PaymentToken }; } return(keypad); }