import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/internal/operators';
import { ConfigsService, httpParamSerializer, PageInfo, ResponseBase, transformResponse } from 'pz-unit';
import { <%= classify(name) %>Model } from './model/<%= dasherize(name) %>.model';
import { serveUrl } from 'environments/environment';

@Injectable()
export class <%= classify(name) %>Api {
    public constructor(private httpClient: HttpClient,
                       protected config: ConfigsService) {
    }

    // 获取分页列表
    public getPageList(page: PageInfo<<%= classify(name) %>Model>): Observable<PageInfo<<%= classify(name) %>Model>> {
        const params = httpParamSerializer({...page.pageData,
            pageSize: page.pageSize, nowPage: page.nowPage, keyWord: page.keyWord});
        const url = `${this.config.exportServer(serveUrl)}sark/tSarkManager/selectSarkManagerPage`;
        return this.httpClient.get<ResponseBase<PageInfo<<%= classify(name) %>Model>>>(url, {params})
            .pipe(map(transformResponse));
    }
    // 获取全部列表
    public getAllList(): Observable<<%= classify(name) %>Model[]> {
        const url = `${this.config.exportServer(serveUrl)}sark/tSarkManager/selectSarkManagerList`;
        return this.httpClient.get<ResponseBase<<%= classify(name) %>Model[]>>(url)
            .pipe(map(transformResponse));
    }
    // 通过ID查询信息
    public getInfoById(id: string): Observable<<%= classify(name) %>Model> {
        const url = `${this.config.exportServer(serveUrl)}sark/tSarkManager/getSarkManagerInfoById/${id}`;
        return this.httpClient.get<ResponseBase<<%= classify(name) %>Model>>(url)
            .pipe(map(transformResponse));
    }
    // 保存或更新信息
    public saveInfo(input: <%= classify(name) %>Model): Observable<void> {
        const url = `${this.config.exportServer(serveUrl)}sark/tSarkManager/${input.id ? 'update' : 'save'}SarkManagerInfo`;
        return this.httpClient.post<ResponseBase<void>>(url, input)
            .pipe(map(transformResponse));
    }
    // 列表导出下载
    public getFile(page: PageInfo<<%= classify(name) %>Model>): Observable<Blob> {
        const params = httpParamSerializer({...page.pageData});
        const url = `${this.config.exportServer(serveUrl)}order/tOrderInfo/exportOrderData`;
        return this.httpClient.get(url, { params, responseType: 'blob'});
    }
}
