//
// AddDiseaseSubjectViewController.m
// com.yx129.yxClientDoctor3
//
// Created by yx on 14/12/4.
// Copyright (c) 2014年 Guangzhou Yixiang Internet Technology Development Limited. All rights reserved.
//
#define SearchNumber 15
#define RequestTag_NormalDisease 401
#define RequestTag_SearchDisease 402
#import "MJRefresh.h"
#import "AddDiseaseSubjectVC.h"
#import "AddSubjectVCCell.h"
//#import "AFNetworking.h"
@interface AddDiseaseSubjectVC ()<MJRefreshBaseViewDelegate,ASIHTTPRequestDelegate>
@end
@implementation AddDiseaseSubjectVC
{
NSMutableDictionary *_postDic;
NSMutableArray *_normalDiseaseArray; //
NSMutableArray *_diseaseModelsArray; //
//NSMutableArray *_MyDataSourceId;//网络请求到的数据2 状态值
UITableView *_MyTableView;//表格视图
UISearchBar *_MySearchBar;//搜索栏
//MBProgressHUDManager *HUDManager;
MJRefreshFooterView *_footerView;
ASIFormDataRequest * _searchDiseaseRequest;
//NSString *searchWords;
NSString *_oldSearchStr;
}
-(id)init
{
if (self = [super init]) {
_normalDiseaseArray=[[NSMutableArray alloc]init];//状态值
_diseaseModelsArray=[[NSMutableArray alloc]init];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[_navView setTitle:@"添加疾病" type:NavTypeBackOnly];
self.view.backgroundColor=kColorHex(@"eeeeee");
//初始化指示器
//HUDManager = [[MBProgressHUDManager alloc] initWithView:self.navigationController.view];
[self _initView];
[self initNormalData];
}
-(void)_initView
{
_MySearchBar=[[UISearchBar alloc]init];
_MySearchBar.layer.backgroundColor = [UIColor whiteColor].CGColor;
//[_MySearchBar setBoarderNone];
//_MySearchBar.backgroundColor=[UIColor whiteColor];
_MySearchBar.frame=CGRectMake(0,_navView.frame.origin.y+_navView.frame.size.height, self.view.frame.size.width, 50);
_MySearchBar.placeholder=@"输入疾病名称,查找并添加";
_MySearchBar.delegate=self;
//_MySearchBar.showsCancelButton=YES;//显示取消按钮
[self.view addSubview:_MySearchBar];
_MyTableView=[[UITableView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(_MySearchBar.frame) +1, self.view.frame.size.width, CGRectGetHeight(self.view.frame) - CGRectGetMaxY(_MySearchBar.frame)) style:UITableViewStylePlain];
_MyTableView.dataSource=self;
_MyTableView.delegate=self;
_MyTableView.rowHeight=50;
_MyTableView.separatorStyle=UITableViewCellSeparatorStyleNone;
[self.view addSubview:_MyTableView];
_footerView = [[MJRefreshFooterView alloc] initWithScrollView:_MyTableView] ;
_footerView.delegate = self;
_footerView.hidden = YES;
}
-(void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:YES];
[_footerView free];
}
-(void)onClickLeftBtn
{
[self.navigationController popViewControllerAnimated:YES];
}
-(void)initNormalData
{
[self.hudManager With_label:@"请稍后..." duration:10];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSURL * url = [NSURL URLWithString:entranceURL];
if ([self.asiRequest isExecuting]) {
return;
}
self.asiRequest = [[ASIFormDataRequest alloc] initWithURL:url];
[self.asiRequest setDelegate:self];
[self.asiRequest setDidFinishSelector:@selector(requestDidFinished:)];
[self.asiRequest setDidFailSelector:@selector(requestDidFailed:)];
[self.asiRequest addPostValue:@"Sourceclient" forKey:@"module"];
[self.asiRequest addPostValue:@"Doctor" forKey:@"controller"];
[self.asiRequest addPostValue:@"diseaseList" forKey:@"action"];
[self.asiRequest addPostValue:kSecret forKey:@"secret"];
[self.asiRequest addPostValue:kSharedDoctor.token_key forKey:@"token_key"];
[self.asiRequest addPostValue:kSharedDoctor.acc_id forKey:@"acc_id"];
[self.asiRequest setRequestMethod:@"GET"];
[self.asiRequest setTimeOutSeconds:10];
[self.asiRequest startAsynchronous];
self.asiRequest.tag = RequestTag_NormalDisease;
}
-(void)loadDataWithKeyWord:(NSString *)keyWord AndPage:(int)page
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
if ([_searchDiseaseRequest isExecuting]) {
return;
}
NSURL * url = [NSURL URLWithString:entranceURL];
ASIFormDataRequest* searchDiseaseRequest = [[ASIFormDataRequest alloc] initWithURL:url];
[searchDiseaseRequest setDelegate:self];
[searchDiseaseRequest setDidFinishSelector:@selector(requestDidFinished:)];
[searchDiseaseRequest setDidFailSelector:@selector(requestDidFailed:)];
[searchDiseaseRequest addPostValue:@"Sourceclient" forKey:@"module"];
[searchDiseaseRequest addPostValue:@"Doctor" forKey:@"controller"];
[searchDiseaseRequest addPostValue:@"diseaseList" forKey:@"action"];
[searchDiseaseRequest addPostValue:kSecret forKey:@"secret"];
[searchDiseaseRequest addPostValue:kSharedDoctor.token_key forKey:@"token_key"];
[searchDiseaseRequest addPostValue:kSharedDoctor.acc_id forKey:@"acc_id"];
[searchDiseaseRequest setRequestMethod:@"GET"];
[searchDiseaseRequest setTimeOutSeconds:10];
NSString * strCurrPage = [NSString stringWithFormat:@"%d", page];
NSString * strPageCount = [NSString stringWithFormat:@"%d", SearchNumber];
[searchDiseaseRequest setPostValue:strCurrPage forKey:@"curr_page"];
[searchDiseaseRequest setPostValue:strPageCount forKey:@"page_count"];
[searchDiseaseRequest addPostValue:keyWord forKey:@"keyword"];
searchDiseaseRequest.tag = RequestTag_SearchDisease;
[searchDiseaseRequest startAsynchronous];
}
-(NSMutableString *)revertArray:(NSArray *)array
{
NSMutableString *str = nil;
for (NSDictionary *dic in array) {
NSArray *keyname = [dic allKeys];
NSArray *valuename = [dic allValues];
[str appendFormat: @"%@=%@&",keyname[0],valuename[0] ];
}
return str;
}
//数据请求成功
-(void)requestDidFinished:(ASIFormDataRequest *)request
{
//[request printParams];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
[self.hudManager hide];
NSDictionary *objDic = [NSJSONSerialization JSONObjectWithData:request.responseData options:NSJSONReadingMutableContainers error:nil];
int code = [[objDic objectForKey:@"code"] intValue];
//数据请求成功
if (40000 == code)
{
if (![[objDic objectForKey:@"list"] isKindOfClass:[NSNull class]]) {
for (NSDictionary *dic in [objDic objectForKey:@"list"]) {
Disease *disease = [[Disease alloc] initWithDict:dic];
[_diseaseModelsArray addObject:disease];
}
}
[_MyTableView reloadData];
}
}
-(void)requestDidFailed:(ASIFormDataRequest *)request
{
[self.hudManager hide];
[MBProgressHUDManager showText:@"请求失败,请稍后再试..."];
//关闭网络
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
NSData *responseData = [request responseData];
NSString* returnString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"请求失败 returnString:%@",returnString);
}
#pragma mark delegate method
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section //行数
{
return _diseaseModelsArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellID=@"cellID";
AddSubjectVCCell *cell=[tableView dequeueReusableCellWithIdentifier:cellID];
if(cell==nil)
{
cell=[[AddSubjectVCCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
}
UIImageView *imgView = [[UIImageView alloc] initWithFrame:cell.bounds];
imgView.image = [UIImage imageNamed:@"cellBgWhite"];
cell.backgroundView = imgView;
cell.selectionStyle=UITableViewCellSelectionStyleNone;//选中风格
if (_diseaseModelsArray.count >indexPath.row) {
Disease *cellDisease = [_diseaseModelsArray objectAtIndex:indexPath.row];
cell.subjectLabel.text = cellDisease.disease_name;
BOOL isAdded = NO;
for (Disease *disease in kSharedDoctor.disease_list) {
if ([cellDisease.disease_id isEqualToString:disease.disease_id]) {
isAdded = YES;
break ;
}
}
[cell hideAddButton:isAdded];
}
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
AddSubjectVCCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//BOOL ishidden = cell.addButton.isHidden;
if (cell.addButton.isHidden) {
return;
}
[cell hideAddButton:YES];
Disease *disease = [_diseaseModelsArray objectAtIndex:indexPath.row];
[self addDiseaseAction:disease];
}
-(void)addDiseaseAction:(Disease *)disease
{
NSMutableDictionary *postDic =[[NSMutableDictionary alloc] init];
//NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
[postDic setObject:@"Sourceclient" forKey:@"module"];
[postDic setObject:@"Doctor" forKey:@"controller"];
[postDic setObject:@"goodAtAddDel" forKey:@"action"]; //diseaseList,doctor
[postDic setObject:kSecret forKey:@"secret"];
[postDic setObject:kSharedDoctor.acc_id forKey:@"acc_id"];
[postDic setObject:kSharedDoctor.token_key forKey:@"token_key"];
[postDic setObject:disease.disease_id forKey:@"disease_add_list"];
YXHttpRequest * request = [[YXHttpRequest alloc]initWithPath:entranceURL params:postDic requestType:kTypePost completion:^(NSDictionary *result, NSError * error){
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
if (!error) {
NSString *msg = [result objectForKey:@"msg"];
[MBProgressHUDManager showText:msg];
[kSharedDoctor.disease_list addObject:disease];
}else{
[request showErrorMessage];
}
}];
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[_MySearchBar resignFirstResponder];
}
#pragma mark UISearchBarDelegate method
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText // called when text changes
{
if (![searchText isEqualToString:_oldSearchStr]) {
[_diseaseModelsArray removeAllObjects];
[self loadDataWithKeyWord:searchText AndPage:1 ];
_oldSearchStr = searchText;
_footerView.hidden = _diseaseModelsArray.count < SearchNumber ? YES:NO;
}
// static int i = 1;
//
// if (i %2 == 0) {
//
// [_diseaseModelsArray removeAllObjects];
//
// [self loadDataWithKeyWord:searchText AndPage:1 ];
//
// }
//
// i++;
}
-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
_MySearchBar.showsCancelButton=NO;//显示取消按钮
}
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
_MySearchBar.text=nil;
_MySearchBar.placeholder=@"输入疾病名称,查找并添加";
[_MySearchBar resignFirstResponder];
_MySearchBar.showsCancelButton=NO; //取消按钮
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
[_MySearchBar resignFirstResponder];
[_diseaseModelsArray removeAllObjects];
[self loadDataWithKeyWord:searchBar.text AndPage:1 ];
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
_MySearchBar.showsCancelButton=YES;//显示取消按钮
//改变uisearchbar中的cancel按钮的文字
//定义取消按钮
for(id cc in [searchBar subviews])
{
for (UIView *view in [cc subviews])
{
// 遍历出来的是UINavigationButton。不知道是不是类,反正我跟不出来所以把他转成字符串再比较
if ([NSStringFromClass(view.class) isEqualToString:@"UINavigationButton"])
{
UIButton *btn = (UIButton *)view;
[btn setTitle:@"取消" forState:UIControlStateNormal];
[btn setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];//icon_triangle_lable,btn_dl_normal
}
}
}
}
#pragma mark - MJRefreshDelegate
-(void)refreshViewBeginRefreshing:(MJRefreshBaseView *)refreshView
{
static int page = 2;
if (page <= 3){
[self loadDataWithKeyWord:_MySearchBar.text AndPage:page++];
}
[refreshView endRefreshing];
}
// called when text ends
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end