public async Task <ActionResult <IEnumerable <UnitVersion> > > GetContractTree(ContractTreeQueryCommand command)
        {
            var result = await mediator.Send(command);

            if (!result.IsValid)
            {
                return(BadRequest(result.Errors));
            }
            return(Ok(result.Data));
        }
Example #2
0
        public async Task <ActionResult <IEnumerable <UnitVersion> > > GetContractTree(ContractTreeQueryCommand command)
        {
            var result = await mediator.Send(command);

            return(Ok(result));
        }
Example #3
0
            public async Task <WebApiResult <IEnumerable <ContractTree> > > Handle(ContractTreeQueryCommand request, CancellationToken cancellationToken)
            {
                try
                {
                    var selected = await preminumFinanceRepository.GetMPSubContract(request.id_version);

                    var result    = new List <ContractTree>();
                    var contracts = await preminumFinanceRepository.GetContractTree();

                    var contracts_format = contracts.Select(a => (IDictionary <string, object>)a);
                    var bp_ids           = from bp in contracts_format
                                           group bp by bp["id_bp"] into g
                                           select g;
                    if (bp_ids.Any())
                    {
                        foreach (var item in bp_ids)
                        {
                            var          bp        = contracts_format.FirstOrDefault(a => a["id_bp"] == item.Key);
                            ContractTree bp_entity = new ContractTree()
                            {
                                id   = Convert.ToInt32(bp["id_bp"]) + 10000,
                                Data = new ContractData()
                                {
                                    id_bp   = Convert.ToInt32(bp["id_bp"]),
                                    bp_name = bp["bp_name"].ToString(),
                                    id      = Convert.ToInt32(bp["id_bp"]) + 10000
                                },
                                State    = new ContractTreeState(),
                                text     = bp["bp_name"]?.ToString() ?? "",
                                Children = new List <ContractTree>()
                            };
                            var contract_contracts = contracts_format.Where(a => Convert.ToInt32(a["id_bp"]) == Convert.ToInt32(item.Key));
                            if (contract_contracts.Any())
                            {
                                var contract_ids = from contract in contract_contracts
                                                   group contract by contract["id_contract"] into g
                                                   select g;

                                if (contract_ids.Any())
                                {
                                    foreach (var contract_id in contract_ids)
                                    {
                                        var          contract        = contract_contracts.FirstOrDefault(a => a["id_contract"] == contract_id.Key);
                                        ContractTree contract_entity = new ContractTree()
                                        {
                                            id   = Convert.ToInt32(contract["id_contract"]) + 100000,
                                            Data = new ContractData()
                                            {
                                                contract_name = contract["contract_name"]?.ToString() ?? "",
                                                id_contract   = Convert.ToInt32(contract["id_contract"]),
                                                id            = Convert.ToInt32(contract["id_contract"]) + 100000
                                            },
                                            text     = contract["contract_name"]?.ToString() ?? "",
                                            State    = new ContractTreeState(),
                                            Children = new List <ContractTree>()
                                        };

                                        var subcontracts = contract_contracts.Where(a => Convert.ToInt32(a["id_contract"]) == Convert.ToInt32(contract_id.Key));

                                        if (subcontracts.Any())
                                        {
                                            foreach (var subcontract in subcontracts)
                                            {
                                                ContractTree subcontract_entity = new ContractTree()
                                                {
                                                    Data = new ContractData()
                                                    {
                                                        subcontract_name = subcontract["subcontract_name"]?.ToString() ?? "empty",
                                                        id = Convert.ToInt32(subcontract["subcontract_id"])
                                                    },
                                                    id    = Convert.ToInt32(subcontract["subcontract_id"]),
                                                    State = new ContractTreeState(),
                                                    text  = subcontract["subcontract_name"]?.ToString() ?? "empty"
                                                };
                                                if (selected.Any(a => a == subcontract_entity.id))
                                                {
                                                    subcontract_entity.State.Selected = true;
                                                    contract_entity.State.Opened      = true;
                                                }

                                                contract_entity.Children.Add(subcontract_entity);
                                            }
                                        }
                                        if (selected.Any(a => a == contract_entity.id))
                                        {
                                            contract_entity.State.Selected = true;
                                            bp_entity.State.Opened         = true;
                                        }

                                        bp_entity.Children.Add(contract_entity);
                                    }
                                }
                            }

                            result.Add(bp_entity);
                        }
                    }

                    return(new WebApiResult <IEnumerable <ContractTree> >(result));
                }
                catch (Exception ex)
                {
                    return(WebApiResult <IEnumerable <ContractTree> > .Error(ex.Message));
                }
            }