package service

import (
	"XT_New/models"
	"github.com/jinzhu/gorm"
)

func CreateAutomaticReduceRecord(config *models.GobalConfig) (err error) {
	err = writeDb.Model(&models.GobalConfig{}).Create(config).Error
	return
}

func FindAutomaticReduceRecordByOrgId(org_id int64) (err error, config models.GobalConfig) {
	err = readDb.Model(&models.GobalConfig{}).Where("status = 1 AND org_id = ?", org_id).Find(&config).Error
	return
}

func UpdateAutomaticReduceRecord(config *models.GobalConfig) (err error) {
	err = writeDb.Save(config).Error
	return
}

func CreatePrintTemplateRecord(template *models.GobalTemplate) (err error) {
	err = writeDb.Model(&models.GobalTemplate{}).Create(template).Error
	return
}

func FindPrintTemplateByOrgId(org_id int64) (err error, template models.GobalTemplate) {
	err = readDb.Model(&models.GobalTemplate{}).Where("status = 1 AND org_id = ?", org_id).Find(&template).Error
	return
}

func UpdatePrintTemplate(template *models.GobalTemplate) (err error) {
	err = writeDb.Save(template).Error
	return
}

func CreateConfigData(config *models.DataUploadConfig) (err error) {
	err = writeDb.Create(config).Error
	return
}

func SaveConfigData(config *models.DataUploadConfig) (err error) {
	err = writeDb.Save(config).Error
	return
}

func GetConfigData(org_id int64, config_type int64) (config models.DataUploadConfig, err error) {
	err = readDb.Model(&models.DataUploadConfig{}).Where("status = 1 AND  org_id = ? AND config_type = ?", org_id, config_type).First(&config).Error
	return
}

func GetDockingStatus(config_type int64, province int64, city int64) (config models.DockingStatus, err error) {
	err = readDb.Model(&models.DockingStatus{}).Where("status = 1 AND  docking_type = ? AND province_id = ? AND city_id = ?", config_type, province, city).First(&config).Error
	return
}

func GetConfigDataById(id int64) (config models.DataUploadConfig, err error) {
	err = readDb.Model(&models.DataUploadConfig{}).Where("id = ?", id).First(&config).Error
	return
}

func FindDoctorAdviceRecordByOrgId(org_id int64) (err error, config models.DoctorAdviceConfig) {
	err = readDb.Model(&models.DoctorAdviceConfig{}).Where("status = 1 AND user_org_id = ?", org_id).Find(&config).Error
	return
}

func CreateDoctorAdviceRecord(config *models.DoctorAdviceConfig) (err error) {
	err = writeDb.Model(&models.DoctorAdviceConfig{}).Create(config).Error
	return
}

func UpdateDoctorAdviceRecord(config *models.DoctorAdviceConfig) (err error) {
	err = writeDb.Save(config).Error
	return
}

func UpdateFiledConfig(org_id int64) (err error) {
	err = writeDb.Model(&models.FiledConfig{}).Where("org_id = ?", org_id).Updates(map[string]interface{}{"is_show": 1}).Error
	return
}

func FindAllHideFiledConfig(template_id int64) (err error, config []*models.FiledConfig) {
	err = readDb.Model(&models.FiledConfig{}).Where("sys_module = ?  AND is_show = 2", template_id).Find(&config).Error
	return
}

func UpdateShowFieldConfig(org_id int64, fileds []string) (err error) {
	err = writeDb.Model(&models.FiledConfig{}).Where("org_id = ? AND filed_name in (?) AND sys_module = 0 ", org_id, fileds).Updates(map[string]interface{}{"is_show": 2}).Error
	return
}

func FindAllAdviceParentTemplate(org_id int64) (template []*models.DoctorAdviceParentTemplate) {
	readDb.Model(&models.DoctorAdviceParentTemplate{}).Preload("DoctorAdviceTemplate", func(db *gorm.DB) *gorm.DB {
		return db.Preload("SubDoctorAdviceTemplate", "status = 1 AND org_id = ?", org_id).Where("status = 1 AND parent_id = 0  AND org_id = ?", org_id)
	}).Where("status = 1 AND org_id = ? ", org_id).Find(&template)
	return
}

func CreateDoctorParentTemplate(template *models.DoctorAdviceParentTemplate) (err error) {
	err = writeDb.Create(&template).Error
	return
}

func FindAllAdviceTemplates(org_id int64, parent_template_id int64) (template []*models.DoctorAdviceTemplate, err error) {
	err = readDb.Model(&models.DoctorAdviceTemplate{}).Where("status = 1 AND org_id = ? AND template_id = ?", org_id, parent_template_id).Find(&template).Error
	return
}

func CreateDoctorTemplate(template *models.DoctorAdviceTemplate) (err error) {
	err = writeDb.Create(&template).Error
	return
}

func CreateSystemDialysisSolution(solution *models.SystemPrescription) (err error) {
	err = writeDb.Create(solution).Error
	return
}

func UpdateSystemDialysisSolution(solution *models.SystemPrescription) (err error) {
	err = writeDb.Save(solution).Error
	return
}

func FindSystemDialysisSolution(orgID int64, id int64) (solution models.SystemPrescription, err error) {
	err = readDb.Model(&models.SystemPrescription{}).Where("id = ? and status=1 and user_org_id=?", id, orgID).First(&solution).Error
	return
}

func FindAllSystemPrescription(orgID int64) (solution []*models.SystemPrescription, err error) {
	err = readDb.Model(&models.SystemPrescription{}).Where("status=1 and user_org_id=?", orgID).Find(&solution).Error
	return
}

func FindSystemDialysisPrescriptionByMode(orgID int64, id int64) (solution models.SystemPrescription, err error) {
	err = readDb.Model(&models.SystemPrescription{}).Where("mode_id = ? and status=1 and user_org_id=?", id, orgID).First(&solution).Error
	return
}

func CreateAdviceInitConfig(adviceInit *models.AdviceInit) (err error) {
	err = writeDb.Create(&adviceInit).Error
	return
}

func FindAdviceInitConfig(org_id int64) (adviceInit models.AdviceInit, err error) {
	err = readDb.Model(&models.AdviceInit{}).Where("user_org_id = ? AND status = 1 ", org_id).First(&adviceInit).Error
	return
}

func GetPrint(ids []int64, orgid int64) (doctor []*models.DoctorAdvice, err error) {

	if len(ids) == 1 {
		err = XTReadDB().Model(&doctor).Where("groupno = ? and user_org_id = ?", ids[0], orgid).Find(&doctor).Error
	} else {
		err = XTReadDB().Model(&doctor).Where("groupno IN(?) and user_org_id = ?", ids, orgid).Find(&doctor).Error
	}

	return doctor, err
}
