コード例 #1
0
        public async Task <IActionResult> ToExcel([FromBody] Excel excel)
        {
            List <ContractSet>                contractsRes      = new List <ContractSet>();
            IEnumerable <ContractSet>         contracts         = _context.ContractSet;
            IEnumerable <ObjectSet>           objects           = _context.ObjectSet;
            IEnumerable <ObjectSetFlat>       flats             = _context.ObjectSetFlat;
            IEnumerable <ObjectSetCar>        cars              = _context.ObjectSetCar;
            IEnumerable <ObjectSetParcel>     parcels           = _context.ObjectSetParcel;
            IEnumerable <ClientSet>           clients           = _context.ClientSet;
            IEnumerable <ClientSetIndividual> clientsIndiv      = _context.ClientSetIndividual;
            IEnumerable <ClientSetEntity>     clientsEnt        = _context.ClientSetEntity;
            IEnumerable <UserSetAppraiser>    apraisers         = _context.UserSetAppraiser;
            IEnumerable <AppraiserContract>   apraisersContract = _context.AppraiserContract;
            IEnumerable <UserSet>             users             = _context.UserSet;
            IEnumerable <AddressSet>          addresses         = _context.AddressSet;
            ContractSet         cntr    = new ContractSet();
            ClientSet           clnt    = new ClientSet();
            ClientSetIndividual indv    = new ClientSetIndividual();
            ClientSetEntity     ent     = new ClientSetEntity();
            ObjectSet           obj     = new ObjectSet();
            ObjectSetFlat       flt     = new ObjectSetFlat();
            ObjectSetCar        cr      = new ObjectSetCar();
            ObjectSetParcel     prcl    = new ObjectSetParcel();
            UserSetAppraiser    apr     = new UserSetAppraiser();
            AppraiserContract   aprCntr = new AppraiserContract();
            UserSet             usr     = new UserSet();
            AddressSet          adr     = new AddressSet();

            for (int i = 0; i < excel.Ids.Count(); i++)
            {
                cntr = contracts.FirstOrDefault(u => u.Id == excel.Ids[i]);

                clnt             = clients.FirstOrDefault(u => u.Id == cntr.ClientId);
                clnt.ContractSet = null;
                indv             = clientsIndiv.FirstOrDefault(u => u.Id == clnt.Id);
                ent = clientsEnt.FirstOrDefault(u => u.Id == clnt.Id);
                if (indv != null)
                {
                    indv.IdNavigation = null;
                    adr = addresses.FirstOrDefault(u => u.Id == indv.AddressOfResidenceId);
                    adr.ClientSetIndividual  = null;
                    indv.AddressOfResidence  = adr;
                    clnt.ClientSetIndividual = indv;
                }
                else
                {
                    ent.IdNavigation = null;
                    adr = addresses.FirstOrDefault(u => u.Id == ent.LegalAddressId);
                    adr.ClientSetEntity  = null;
                    ent.LegalAddress     = adr;
                    clnt.ClientSetEntity = ent;
                }
                cntr.Client = clnt;

                obj             = objects.FirstOrDefault(u => u.Id == cntr.ObjectId);
                obj.ContractSet = null;
                flt             = flats.FirstOrDefault(u => u.Id == obj.Id);
                cr   = cars.FirstOrDefault(u => u.Id == obj.Id);
                prcl = parcels.FirstOrDefault(u => u.Id == obj.Id);
                if (flt != null)
                {
                    flt.IdNavigation = null;
                    adr = addresses.FirstOrDefault(u => u.Id == flt.AddressId);
                    adr.ObjectSetFlat = null;
                    flt.Address       = adr;
                    obj.ObjectSetFlat = flt;
                }
                else
                {
                    if (prcl != null)
                    {
                        prcl.IdNavigation   = null;
                        obj.ObjectSetParcel = prcl;
                    }
                    else
                    {
                        cr.IdNavigation  = null;
                        obj.ObjectSetCar = cr;
                    }
                }
                cntr.Object = obj;

                aprCntr = apraisersContract.FirstOrDefault(u => u.ContractId == cntr.Id);
                apr     = apraisers.FirstOrDefault(u => u.Id == aprCntr.AppraiserId);
                apr.AppraiserContract = null;
                usr = users.FirstOrDefault(u => u.Id == apr.Id);
                usr.UserSetAppraiser = null;
                apr.IdNavigation     = usr;
                aprCntr.Appraiser    = apr;
                aprCntr.Contract     = null;

                AppraiserContract[] arr = new AppraiserContract[1];
                arr[0] = aprCntr;
                cntr.AppraiserContract = arr;

                contractsRes.Add(cntr);
            }

            var fileDownloadName = "Договоры.xlsx";

            using (var package = createExcelPackage(contractsRes))
            {
                package.SaveAs(new FileInfo(Path.Combine(@"C:\Users\user\Downloads", fileDownloadName)));
            }
            return(Ok());
        }