Exemplo n.º 1
0
        public ActionResult AssignClusterToEmployee(FormCollection form)
        {
            TypeQueryResult lstEmp = _masterService.GetTypeQueryResult("CLUSTER_ASSIGNMENT_EMP");

            ViewBag.EmployeeList = new SelectList(lstEmp, "Id", "Name");

            List <SelectListDto> clusterlist       = _ClusterService.GetClusterSelectList();
            SelectList           clusterSelectList = new SelectList(clusterlist, "ID", "Text");

            ViewBag.Clusterlist = clusterSelectList;

            ResultDto resultDto = new ResultDto();

            int employeeId = Convert.ToInt32(form["EmployeeID"]);
            int maxIndex   = Convert.ToInt32(form["hdnIndex"]);

            List <ClusterAssignmentDto> lstClusterAssignement = new List <ClusterAssignmentDto>();

            for (int i = 1; i <= maxIndex; i++)
            {
                //  if (form["hdnClusterID_" + i] == null) continue;


                if (form["Checkcluster_" + i] == "on")
                {
                    lstClusterAssignement.Add(new ClusterAssignmentDto()
                    {
                        ClusterID = Convert.ToInt32(form["hdnClusterID_" + i])
                    });
                }
            }
            resultDto = _employeeService.ManageClusterAssignments(lstClusterAssignement, employeeId);
            return(View());
        }
        public ActionResult CreateMemberLoanDisbursement(string Id)
        {
            int  ID       = string.IsNullOrEmpty(Id.DecryptString()) ? default(int) : Convert.ToInt32(Id.DecryptString());
            char LoanType = 'M';
            var  groupLoanDisbursementDto = new GroupLoanDisbursementDto();

            if (ID > 0)
            {
                LoadLoanInterestDropDowns();

                groupLoanDisbursementDto = GetLoanDisbursementDto(ID, LoanType);
                if (groupLoanDisbursementDto.InterestMasterID > 0)
                {
                    InterestMasterDto objInterestMasterDto = GetInterestDetailsDto(groupLoanDisbursementDto.InterestMasterID);
                    groupLoanDisbursementDto.PrincipleAHName = objInterestMasterDto.PrincipalAHName;
                    groupLoanDisbursementDto.InterestAHName  = objInterestMasterDto.InterestName;
                    groupLoanDisbursementDto.PrincipleAHId   = Convert.ToInt32(objInterestMasterDto.PrincipalAHID);
                    groupLoanDisbursementDto.InterestRateID  = objInterestMasterDto.InterestRateID;
                    groupLoanDisbursementDto.ROI             = objInterestMasterDto.InterestRate;
                }

                List <SelectListDto> memberselectlist = _memberService.GetMemberCodeByGroupId(groupLoanDisbursementDto.GroupID);
                SelectList           lstmembernames   = new SelectList(memberselectlist, "id", "text");
                ViewBag.membercodes = lstmembernames;
            }
            List <GroupMeetingDto> lstGroupMeetings = new GroupOtherReceiptService().GetGroupOpenMeetingDates(GroupInfo.GroupID);

            ViewBag.MonthMeetings = new SelectList(lstGroupMeetings, "DisplayMeetingDate", "DisplayMeetingDate");

            TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH", GroupInfo.GroupID.ToString());

            ViewBag.slBankAh = new SelectList(lstBankAh.OrderBy(a => a.Name), "Id", "Name");
            return(View(groupLoanDisbursementDto));
        }
Exemplo n.º 3
0
        public ActionResult Disbursement(int id)
        {
            char type = 'G';

            GroupLoanDisbursementDto groupLoanDisbursementDto = GetLoanDisbursementDto(id, type);

            LoadLoanInterestDropDowns();

            List <SelectListDto> fundSourceSelectList = _fundSourceService.GetFundSourceSelectList();
            SelectList           SlstfoundSource      = new SelectList(fundSourceSelectList, "ID", "Text");

            ViewBag.foundSource = SlstfoundSource;

            List <SelectListDto> projectSelectList = _projectService.GetProjectSelectList();
            SelectList           slProjectList     = new SelectList(projectSelectList, "ID", "Text");

            ViewBag.projects = slProjectList;

            BankMasterViewDto        objBank     = new BankMasterViewDto();
            List <BankMasterViewDto> lstFedBanks = _groupReceiptService.GetFederationBanks();
            SelectList lstFederationBanks        = new SelectList(lstFedBanks, "BankEntryID", "AccountNumber", objBank.BankEntryID);

            ViewBag.federationbanks = lstFederationBanks;

            TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH", groupLoanDisbursementDto.GroupID.ToString());

            ViewBag.slBankAh = new SelectList(lstBankAh.OrderBy(a => a.Name), "Id", "Name");

            return(View(groupLoanDisbursementDto));
        }
        public ActionResult BindDropdown(string flag, int Id)
        {
            StringBuilder sbOptions = new StringBuilder();

            if (flag == "Cluster")
            {
                List <SelectListDto> lstGroups = _groupService.GetGroupByClusterID(Id);
                foreach (var item in lstGroups)
                {
                    sbOptions.Append("<option value=" + item.ID + ">" + item.Text + "</option>");
                }
            }
            if (flag == "Group")
            {
                TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH", Id.ToString());
                foreach (var item in lstBankAh)
                {
                    sbOptions.Append("<option value=" + item.Id + ">" + item.Name + "</option>");
                }

                var count = _federationLoanApplicationService.GetMemberCountByGroupId(Id);
                return(Json(new { sbOptions = sbOptions.ToString(), MemberCount = count }));
            }
            if (flag == "GLAccount")
            {
                TypeQueryResult lstSLAccounts = _masterService.GetTypeQueryResult("FED_LOAN_SL_HEADS", Id.ToString());
                foreach (var item in lstSLAccounts)
                {
                    sbOptions.Append("<option value=" + item.Id + ">" + item.Name + "</option>");
                }
            }
            return(Json(sbOptions.ToString()));
        }
Exemplo n.º 5
0
        public ActionResult CreateGroupLoanDisbursement(string Id)
        {
            int  ID       = string.IsNullOrEmpty(Id.DecryptString()) ? default(int) : Convert.ToInt32(Id.DecryptString());
            char LoanType = 'G';
            var  groupLoanDisbursementDto = new GroupLoanDisbursementDto();

            if (ID > 0)
            {
                Disbursement(ID);

                groupLoanDisbursementDto = GetLoanDisbursementDto(ID, LoanType);

                //Set interst ahnames while edit aftersaving, these are empty for 1st time
                if (groupLoanDisbursementDto.InterestMasterID > 0)
                {
                    InterestMasterDto objInterestMasterDto = GetInterestDetailsDto(groupLoanDisbursementDto.InterestMasterID);
                    groupLoanDisbursementDto.PrincipleAHName = objInterestMasterDto.AHName;
                    groupLoanDisbursementDto.InterestAHName  = objInterestMasterDto.InterestAHName;
                    groupLoanDisbursementDto.PrincipleAHId   = Convert.ToInt32(objInterestMasterDto.PrincipalAHID);
                    groupLoanDisbursementDto.InterestRateID  = objInterestMasterDto.InterestRateID;
                }
                List <SelectListDto> memberselectlist = _memberService.GetMemberCodeByGroupId(groupLoanDisbursementDto.GroupID);
                SelectList           lstmembernames   = new SelectList(memberselectlist, "id", "text");
                ViewBag.membercodes = lstmembernames;

                TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH", groupLoanDisbursementDto.GroupID.ToString());
                ViewBag.slBankAh = new SelectList(lstBankAh.OrderBy(a => a.Name), "Id", "Name");
            }

            return(View(groupLoanDisbursementDto));
        }
Exemplo n.º 6
0
        public TypeQueryResult GetTypeQueryResult(string typeCode, string param1 = null, string param2 = null, string param3 = null, string param4 = null, string param5 = null, string param6 = null)
        {
            TypeQueryResult lstResult = new TypeQueryResult();
            TypeQueryDto    obj       = null;

            AdoHelper ado = new AdoHelper();

            SqlParameter[] param = new SqlParameter[7];

            param[0] = new SqlParameter("@TypeCode", typeCode);
            param[1] = new SqlParameter("@Param1", param1);
            param[2] = new SqlParameter("@Param2", param2);
            param[3] = new SqlParameter("@Param3", param3);
            param[4] = new SqlParameter("@Param4", param4);
            param[5] = new SqlParameter("@Param5", param5);
            param[6] = new SqlParameter("@Param6", param6);

            SqlDataReader dr = ado.ExecDataReaderProc("uspGetTypeQueryResult", param);

            while (dr.Read())
            {
                int fieldCount = dr.FieldCount;

                obj    = new TypeQueryDto();
                obj.Id = Convert.ToString(dr["Id"]);
                if (fieldCount > 1 && dr["Name"] != DBNull.Value)
                {
                    obj.Name = Convert.ToString(dr["Name"]);
                }
                if (fieldCount > 2 && dr["Code"] != DBNull.Value)
                {
                    obj.Code = Convert.ToString(dr["Code"]);
                }
                if (fieldCount > 3 && dr["Value1"] != DBNull.Value)
                {
                    obj.Value1 = Convert.ToString(dr["Value1"]);
                }
                if (fieldCount > 4 && dr["Value2"] != DBNull.Value)
                {
                    obj.Value2 = Convert.ToString(dr["Value2"]);
                }
                if (fieldCount > 5 && dr["Value3"] != DBNull.Value)
                {
                    obj.Value3 = Convert.ToString(dr["Value3"]);
                }
                if (fieldCount > 6 && dr["Value4"] != DBNull.Value)
                {
                    obj.Value4 = Convert.ToString(dr["Value4"]);
                }
                if (fieldCount > 7 && dr["Value5"] != DBNull.Value)
                {
                    obj.Value5 = Convert.ToString(dr["Value5"]);
                }

                lstResult.Add(obj);
            }

            return(lstResult);
        }
Exemplo n.º 7
0
        public JsonResult GetSubLedgerBankAccountHeadsByGLAHId(string glAHId)
        {
            // var slAccountHeads = _groupOtherReceiptService.GetSLAccountHeads(int.Parse(glAHId));
            TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH_OB", GroupInfo.GroupID.ToString(), glAHId);

            // ViewBag.slBankAh = new SelectList(lstBankAh.OrderBy(a => a.Name), "Id", "Name");

            return(Json(new { slAccountHeads = lstBankAh }));
        }
        public void LoadFederationLoanApplnDropdowns()
        {
            List <SelectListDto> lstClusters = _clusterService.GetClusterSelectList();
            SelectList           slClusters  = new SelectList(lstClusters, "ID", "Text");

            ViewBag.clusters = slClusters;

            TypeQueryResult lst = _masterService.GetTypeQueryResult("FED_LOAN_GL_HEAD");

            ViewBag.lstGLAcHeads = new SelectList(lst.OrderBy(a => a.Name), "Id", "Name");
        }
Exemplo n.º 9
0
        public ActionResult AssignClusterToEmployee()
        {
            TypeQueryResult lstEmp = _masterService.GetTypeQueryResult("CLUSTER_ASSIGNMENT_EMP");

            ViewBag.EmployeeList = new SelectList(lstEmp, "Id", "Name");

            List <SelectListDto> clusterlist       = _ClusterService.GetClusterSelectList();
            SelectList           clusterSelectList = new SelectList(clusterlist, "ID", "Text");

            ViewBag.Clusterlist = clusterSelectList;
            return(View());
        }
        private void LoadDropDowns()
        {
            List <GroupMeetingDto> lstGroupMeetings = new GroupOtherReceiptService().GetGroupOpenMeetingDates(GroupInfo.GroupID);

            ViewBag.MonthMeetings = new SelectList(lstGroupMeetings, "DisplayMeetingDate", "DisplayMeetingDate");

            TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH", GroupInfo.GroupID.ToString());

            ViewBag.slBankAh = new SelectList(lstBankAh.OrderBy(a => a.Name), "Id", "Name");

            ViewBag.MeetingDueDay = GroupInfo.MeetingDay;

            ViewBag.RoleCode = UserInfo.RoleCode;
        }
Exemplo n.º 11
0
        private void LoadDropdowns()
        {
            int GroupId = GroupInfo.GroupID;

            TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH", GroupInfo.GroupID.ToString());

            ViewBag.slBankAh = new SelectList(lstBankAh.OrderBy(a => a.Name), "Id", "Name");

            TypeQueryResult lstGLAccounts = _masterService.GetTypeQueryResult("GROUP_BANK_LOAN_GL_AH");

            ViewBag.slGLAHS = new SelectList(lstGLAccounts.OrderBy(a => a.Name), "Id", "Name");

            TypeQueryResult lstSLAccounts = _masterService.GetTypeQueryResult("FED_LOAN_SL_HEADS", lstGLAccounts[0].Id.ToString());

            ViewBag.slSLAHS = new SelectList(lstSLAccounts.OrderBy(a => a.Name), "Id", "Name");
        }
Exemplo n.º 12
0
        public void LoadOtherReceiptDropDowns()
        {
            TypeQueryResult lst = _masterService.GetTypeQueryResult("GROUP_GL_ACCOUNT_HEADS", "G,B,M");

            ViewBag.lstGLAcHeads = new SelectList(lst.OrderBy(a => a.Name).Where(b => b.Name.Split(new string[] { "::" }, StringSplitOptions.None)[1].StartsWith("1") || b.Name.Split(new string[] { "::" }, StringSplitOptions.None)[1].StartsWith("2") || b.Name.Split(new string[] { "::" }, StringSplitOptions.None)[1].StartsWith("4")), "Id", "Name");

            TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH", GroupInfo.GroupID.ToString());

            ViewBag.slBankAh = new SelectList(lstBankAh.OrderBy(a => a.Name), "Id", "Name");

            TypeQueryResult lstEmp = _masterService.GetTypeQueryResult("ACT_EMPLOYEES", GroupInfo.GroupID.ToString());

            ViewBag.slEmp = new SelectList(lstEmp, "Id", "Name", UserInfo.UserID);

            List <GroupMeetingDto> lstGroupMeetings = _groupOtherReceiptService.GetGroupOpenMeetingDates(GroupInfo.GroupID);

            ViewBag.MonthMeetings = new SelectList(lstGroupMeetings, "DisplayMeetingDate", "DisplayMeetingDate");
        }
        public void LoadMemberReceiptDropDowns()
        {
            TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH", GroupInfo.GroupID.ToString());

            ViewBag.slBankAh = new SelectList(lstBankAh.OrderBy(a => a.Name), "Id", "Name");

            TypeQueryResult lstEmp = _masterService.GetTypeQueryResult("ACT_EMPLOYEES", GroupInfo.GroupID.ToString());

            ViewBag.slEmp = new SelectList(lstEmp, "Id", "Name", UserInfo.UserID);

            List <MemberDto> lstMembers = _groupMemberReceiptService.GetMembersByGroupId(GroupInfo.GroupID);

            ViewBag.grpMembers = new SelectList(lstMembers, "MemberId", "MemberName", "Select Member");

            List <GroupMeetingDto> lstGroupMeetings = _groupOtherReceiptService.GetGroupOpenMeetingDates(GroupInfo.GroupID);

            ViewBag.MonthMeetings = new SelectList(lstGroupMeetings, "DisplayMeetingDate", "DisplayMeetingDate");
        }
Exemplo n.º 14
0
        public void LoadOtherJournalDropDowns(string type)
        {
            TypeQueryResult lstFrom = _masterService.GetTypeQueryResult(type == "M" ? "GROUP_GMJ_FROM_GL_HEADS" : "GROUP_GOJ_FROM_GL_HEADS");

            ViewBag.lstFromGLAcHeads = new SelectList(lstFrom.OrderBy(a => a.Name), "Id", "Name");

            TypeQueryResult lstTo = _masterService.GetTypeQueryResult(type == "M" ? "GROUP_GMJ_TO_GL_HEADS" : "GROUP_GOJ_TO_GL_HEADS");

            ViewBag.lstToGLAcHeads = new SelectList(lstTo.OrderBy(a => a.Name), "Id", "Name");

            TypeQueryResult lstEmp = _masterService.GetTypeQueryResult("ACT_EMPLOYEES", GroupInfo.GroupID.ToString());

            ViewBag.slEmp = new SelectList(lstEmp, "Id", "Name", UserInfo.UserID);

            GroupMemberReceiptService objMrService = new GroupMemberReceiptService();
            List <MemberDto>          lstMembers   = objMrService.GetMembersByGroupId(GroupInfo.GroupID);

            ViewBag.grpMembers = new SelectList(lstMembers, "MemberId", "MemberName", "Select Member");
        }
        public void LoadOtherReceiptDropDowns()
        {
            TypeQueryResult lst = _masterService.GetTypeQueryResult("GROUP_GL_ACCOUNT_HEADS");

            ViewBag.lstGLAcHeads = new SelectList(lst.OrderBy(a => a.Name), "Id", "Name");

            TypeQueryResult lstBankAh = _masterService.GetTypeQueryResult("GROUP_OR_BANK_AH", GroupInfo.GroupID.ToString());

            ViewBag.slBankAh = new SelectList(lstBankAh.OrderBy(a => a.Name), "Id", "Name");

            TypeQueryResult lstEmp = _masterService.GetTypeQueryResult("ACT_EMPLOYEES", GroupInfo.GroupID.ToString());

            ViewBag.slEmp = new SelectList(lstEmp, "Id", "Name", UserInfo.UserID);
            List <AccountHeadDto> lstAccountHeadDtos = _accountheadService.GetGroupAccountTree(GroupInfo.GroupID);

            lstAccountHeadDtos = lstAccountHeadDtos.FindAll(l => l.AHLevel > 3).OrderBy(o => o.AHName).ToList();
            SelectList lstahcode = new SelectList(lstAccountHeadDtos.OrderBy(l => l.AHNameAndCode), "AHID", "AHNameAndCode");

            ViewBag.ahcodes = lstahcode;
        }
        public async Task ShouldQueryTypesAsync()
        {
            Response <TypeQueryResult> response = await _client.Types().QueryTypesAsync();

            Assert.IsTrue(response.Success);

            TypeQueryResult typeQueryResult = response.Result;

            Assert.NotNull(typeQueryResult.Results);
            Assert.GreaterOrEqual(typeQueryResult.Results.Count, 1);

            int limit = 2;

            response = await _client.Types().QueryTypesAsync(limit: limit);

            Assert.IsTrue(response.Success);

            typeQueryResult = response.Result;
            Assert.NotNull(typeQueryResult.Results);
            Assert.LessOrEqual(typeQueryResult.Results.Count, limit);
        }
Exemplo n.º 17
0
        public ActionResult BindDropDowns(int parentAhid, int accountHeadLevel, string Id, bool isFederation)
        {
            StringBuilder sbDropdownOptions = new StringBuilder();

            #region ddlEditSubGroup

            if (Id == "SubGroup")
            {
                StringBuilder sbAccountHeadOptions = new StringBuilder();
                StringBuilder sbSubGroupOptions    = new StringBuilder();


                if (accountHeadLevel == 4)
                {
                    var dropDownAccountHeadOptions = (from item in AccountHeadDtos
                                                      where item.ParentAHID == parentAhid && item.AHLevel == 4 && (item.IsFederation == isFederation || item.AHLevel < 4)
                                                      select new { AHCode = item.AHID + ":" + item.AHCode, AhName = item.AHName + " - " + item.AHCode }
                                                      );
                    foreach (var dropDownOption in dropDownAccountHeadOptions)
                    {
                        sbSubGroupOptions.Append("<option value='" + dropDownOption.AHCode + "'>" + dropDownOption.AhName + "</option>");
                    }
                }
                else
                {
                    var dropDownSubGroupOptions = (from item in AccountHeadDtos
                                                   where item.ParentAHID == parentAhid && item.AHLevel == 4 && (item.IsFederation == isFederation || item.AHLevel < 4)
                                                   select new { ParentAhid = item.AHID, AhName = item.AHName + " - " + item.AHCode }
                                                   );
                    foreach (var dropDownOption in dropDownSubGroupOptions)
                    {
                        sbSubGroupOptions.Append("<option value='" + dropDownOption.ParentAhid + "'>" + dropDownOption.AhName + "</option>");
                    }
                }


                if (accountHeadLevel == 5)
                {
                    var dropDownAccountHeadOptions = (from item in AccountHeadDtos
                                                      where item.ParentAHID == parentAhid && item.AHLevel == 5 && (item.IsFederation == isFederation || item.AHLevel < 4)
                                                      select new { AHCode = item.AHID + "_" + item.AHCode, AhName = item.AHName + " - " + item.AHCode }
                                                      );
                    foreach (var dropDownOption in dropDownAccountHeadOptions)
                    {
                        sbAccountHeadOptions.Append("<option value='" + dropDownOption.AHCode + "'>" + dropDownOption.AhName + "</option>");
                    }
                }

                return(Json(new { AccountHeadOptions = sbAccountHeadOptions != null ? sbAccountHeadOptions.ToString() : "", SubGroupOptions = sbSubGroupOptions != null ? sbSubGroupOptions.ToString() : "" }));
            }
            #endregion ddlEditSubGroup
            else if (Id == "SearchAccountHead")
            {
                var dropDownAccountHeadOptions = (from item in AccountHeadDtos
                                                  where item.ParentAHID == parentAhid && item.AHLevel == 5 && (item.IsFederation == isFederation || item.AHLevel < 4)
                                                  select new { AHCode = item.AHID + ":" + item.AHCode, AhName = item.AHName + " - " + item.AHCode }
                                                  );
                foreach (var dropDownOption in dropDownAccountHeadOptions)
                {
                    sbDropdownOptions.Append("<option value='" + dropDownOption.AHCode + "'>" + dropDownOption.AhName + "</option>");
                }

                return(Json(new { DropDownOptions = sbDropdownOptions.ToString() }));
            }
            else if (Id == "MoveSubGroupAccountHead")
            {
                var subGroupFields = (from item in AccountHeadDtos
                                      where item.ParentAHID == parentAhid && item.AHLevel == 4 && (item.IsFederation == isFederation || item.AHLevel < 4)
                                      select new { ParentAhid = item.AHID, AhName = item.AHName + " - " + item.AHCode }
                                      );

                var accountHeadFields = (from item in AccountHeadDtos
                                         where item.ParentAHID == parentAhid && item.AHLevel == 5 && (item.IsFederation == isFederation || item.AHLevel < 4)
                                         select new { ParentAhid = item.AHID, AhName = item.AHName + " - " + item.AHCode }
                                         );

                return(Json(new { SubGroupFields = subGroupFields, AccountHeadFields = accountHeadFields }));
            }
            else if (Id == "ViewBalanceAccountHead")
            {
                TypeQueryResult lst = _masterService.GetTypeQueryResult("GROUP_UPD_OPENING_BAL_ASSETS_LIABILITIES", "G");
                ViewBag.lstGLAcHeads = new SelectList(lst.OrderBy(a => a.Name), "Id", "Name");

                //var dropDownOptions = (from item in AccountHeadDtos
                //                       where item.AHLevel == accountHeadLevel && (item.IsFederation == isFederation || item.AHLevel < 4)
                //                       select new { ParentAhid = item.AHID, AhName = item.AHName + " - " + item.AHCode }
                //                    );

                foreach (var dropDownOption in lst)
                {
                    sbDropdownOptions.Append("<option value='" + dropDownOption.Id + "'>" + dropDownOption.Name + "</option>");
                }

                return(Json(new { DropDownOptions = sbDropdownOptions.ToString() }));
            }
            else
            {
                var dropDownOptions = (from item in AccountHeadDtos
                                       where item.ParentAHID == parentAhid && (item.IsFederation == isFederation || item.AHLevel < 4)
                                       select new { ParentAhid = item.AHID, AhName = item.AHName }
                                       );
                foreach (var dropDownOption in dropDownOptions)
                {
                    sbDropdownOptions.Append("<option value='" + dropDownOption.ParentAhid + "'>" + dropDownOption.AhName + "</option>");
                }

                return(Json(new { DropDownOptions = sbDropdownOptions.ToString() }));
            }
        }