package backend

import pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"

func (s *StoreEntry) DrugCategoryMaps() map[pasturePb.DrugCategory_Kind]string {
	res := make(map[pasturePb.DrugCategory_Kind]string)
	for _, v := range s.DrugCategoryEnumList("") {
		res[pasturePb.DrugCategory_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) DrugUsageMaps() map[pasturePb.DrugUsage_Kind]string {
	res := make(map[pasturePb.DrugUsage_Kind]string)
	for _, v := range s.DrugUsageEnumList("") {
		res[pasturePb.DrugUsage_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) ExposeEstrusTypeMap() map[pasturePb.ExposeEstrusType_Kind]string {
	res := make(map[pasturePb.ExposeEstrusType_Kind]string)
	for _, v := range s.ExposeEstrusTypeEnumList("") {
		res[pasturePb.ExposeEstrusType_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) FrozenSemenTypeMap() map[pasturePb.FrozenSemenType_Kind]string {
	res := make(map[pasturePb.FrozenSemenType_Kind]string)
	for _, v := range s.FrozenSemenTypeEnumList("") {
		res[pasturePb.FrozenSemenType_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) UnitMap() map[pasturePb.Unit_Kind]string {
	res := make(map[pasturePb.Unit_Kind]string)
	for _, v := range s.UnitEnumList("") {
		res[pasturePb.Unit_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) WeekMap() map[pasturePb.Week_Kind]string {
	res := make(map[pasturePb.Week_Kind]string)
	for _, v := range s.WeekEnumList("") {
		res[pasturePb.Week_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) MonthMap() map[int32]string {
	res := make(map[int32]string)
	for _, v := range s.MonthEnumList("") {
		res[v.Value] = v.Label
	}
	return res
}

func (s *StoreEntry) CowTypeMap() map[pasturePb.CowType_Kind]string {
	res := make(map[pasturePb.CowType_Kind]string)
	optionName, isAll := "", ""
	for _, v := range s.CowTypeEnumList(optionName, isAll) {
		res[pasturePb.CowType_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) CowBreedStatusMap() map[pasturePb.BreedStatus_Kind]string {
	res := make(map[pasturePb.BreedStatus_Kind]string)
	for _, v := range s.BreedStatusEnumList() {
		res[pasturePb.BreedStatus_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) CowKindMap() map[pasturePb.CowKind_Kind]string {
	res := make(map[pasturePb.CowKind_Kind]string)
	for _, v := range s.CowKindEnumList() {
		res[pasturePb.CowKind_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) CowSourceMap() map[pasturePb.CowSource_Kind]string {
	res := make(map[pasturePb.CowSource_Kind]string)
	for _, v := range s.CowSourceEnumList() {
		res[pasturePb.CowSource_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) WorkOrderCategoryMap() map[pasturePb.WorkOrderCategory_Kind]string {
	res := make(map[pasturePb.WorkOrderCategory_Kind]string)
	for _, v := range s.WorkOrderCategoryEnumList("") {
		res[pasturePb.WorkOrderCategory_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) WorkOrderFrequencyMap() map[pasturePb.WorkOrderFrequency_Kind]string {
	res := make(map[pasturePb.WorkOrderFrequency_Kind]string)
	for _, v := range s.WorkOrderFrequencyEnumList("") {
		res[pasturePb.WorkOrderFrequency_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) WorkOrderSubUnitMap() map[pasturePb.WorkOrderSubscribeUnit_Kind]string {
	res := make(map[pasturePb.WorkOrderSubscribeUnit_Kind]string)
	for _, v := range s.WorkOrderSubUnitEnumList("") {
		res[pasturePb.WorkOrderSubscribeUnit_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) WorkOrderPriorityMap() map[pasturePb.Priority_Kind]string {
	res := make(map[pasturePb.Priority_Kind]string)
	for _, v := range s.WorkOrderPriorityEnumList("") {
		res[pasturePb.Priority_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) SameTimeCowTypeMap() map[pasturePb.SameTimeCowType_Kind]string {
	res := make(map[pasturePb.SameTimeCowType_Kind]string)
	for _, v := range s.SameTimeCowTypeEnumList("") {
		res[pasturePb.SameTimeCowType_Kind(v.Value)] = v.Label
	}
	return res
}

func CalendarTypeMap() map[pasturePb.CalendarType_Kind]string {
	res := make(map[pasturePb.CalendarType_Kind]string)
	for _, v := range CalendarTypeEnumList("") {
		res[pasturePb.CalendarType_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) AbortionReasonsMap() map[pasturePb.AbortionReasons_Kind]string {
	res := make(map[pasturePb.AbortionReasons_Kind]string)
	for _, v := range s.AbortionReasonsEnumList("") {
		res[pasturePb.AbortionReasons_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) PregnantCheckMethodMap() map[pasturePb.PregnantCheckMethod_Kind]string {
	res := make(map[pasturePb.PregnantCheckMethod_Kind]string)
	for _, v := range s.PregnantCheckMethodEnumList("") {
		res[pasturePb.PregnantCheckMethod_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) PregnantCheckResultMap() map[pasturePb.PregnantCheckResult_Kind]string {
	res := make(map[pasturePb.PregnantCheckResult_Kind]string)
	for _, v := range s.PregnantCheckResultEnumList("") {
		res[pasturePb.PregnantCheckResult_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) HealthStatusMap() map[pasturePb.HealthStatus_Kind]string {
	res := make(map[pasturePb.HealthStatus_Kind]string)
	for _, v := range s.HealthStatusEnumList("") {
		res[pasturePb.HealthStatus_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) DiseaseTypeMap() map[int32]string {
	res := make(map[int32]string)
	for _, v := range s.diseaseTypeEnumList("") {
		res[v.Value] = v.Label
	}
	return res
}

func (s *StoreEntry) MultiFactorAnalysisMethodMap() map[pasturePb.MultiFactorAnalysisMethod_Kind]string {
	res := make(map[pasturePb.MultiFactorAnalysisMethod_Kind]string)
	res[pasturePb.MultiFactorAnalysisMethod_Months] = "months"
	res[pasturePb.MultiFactorAnalysisMethod_Week] = "week"
	res[pasturePb.MultiFactorAnalysisMethod_Operation] = "operation_name"
	res[pasturePb.MultiFactorAnalysisMethod_Bull] = "frozen_semen_number"
	res[pasturePb.MultiFactorAnalysisMethod_Lact] = "lact"
	res[pasturePb.MultiFactorAnalysisMethod_Mating_Times] = "mating_times"
	res[pasturePb.MultiFactorAnalysisMethod_Breeding_Method] = "expose_estrus_type"
	return res
}

func (s *StoreEntry) NeckRingStatusMap() map[pasturePb.NeckRingStatus_Kind]string {
	res := make(map[pasturePb.NeckRingStatus_Kind]string)
	for _, v := range s.NeckRingStatusEnumList("") {
		res[pasturePb.NeckRingStatus_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) OutTypeMap() map[pasturePb.OutType_Kind]string {
	res := make(map[pasturePb.OutType_Kind]string)
	for _, v := range s.OutTypeEnumList("") {
		res[pasturePb.OutType_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) AuditStatusMap() map[pasturePb.AuditStatus_Kind]string {
	res := make(map[pasturePb.AuditStatus_Kind]string)
	for _, v := range s.AuditStatusEnumList("") {
		res[pasturePb.AuditStatus_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) AdmissionStatusMap() map[pasturePb.AdmissionStatus_Kind]string {
	res := make(map[pasturePb.AdmissionStatus_Kind]string)
	for _, v := range s.AdmissionStatusEnumList("") {
		res[pasturePb.AdmissionStatus_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) SameTimeTypeMap() map[pasturePb.SameTimeType_Kind]string {
	res := make(map[pasturePb.SameTimeType_Kind]string)
	for _, v := range s.SameTimeTypeEnumList("") {
		res[pasturePb.SameTimeType_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) EventTypeMap() map[pasturePb.EventType_Kind]string {
	res := make(map[pasturePb.EventType_Kind]string)
	for _, v := range s.EventTypeEnumList("") {
		res[pasturePb.EventType_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) CalvingLevelMap() map[pasturePb.CalvingLevel_Kind]string {
	res := make(map[pasturePb.CalvingLevel_Kind]string)
	for _, v := range s.CalvingLevelEnumList("") {
		res[pasturePb.CalvingLevel_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) DystociaReasonMap() map[pasturePb.DystociaReason_Kind]string {
	res := make(map[pasturePb.DystociaReason_Kind]string)
	for _, v := range s.DystociaReasonEnumList("") {
		res[pasturePb.DystociaReason_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) DeadReasonMap() map[pasturePb.DeadReason_Kind]string {
	res := make(map[pasturePb.DeadReason_Kind]string)
	for _, v := range s.DeadReasonEnumList("") {
		res[pasturePb.DeadReason_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) OutReasonMap() map[pasturePb.OutReason_Kind]string {
	res := make(map[pasturePb.OutReason_Kind]string)
	for _, v := range s.OutReasonEnumList("") {
		res[pasturePb.OutReason_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) MatingResultMap() map[pasturePb.MatingResult_Kind]string {
	res := make(map[pasturePb.MatingResult_Kind]string)
	for _, v := range s.MatingResultEnumList("") {
		res[pasturePb.MatingResult_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) EventCategoryMap() map[pasturePb.EventCategory_Kind]string {
	res := make(map[pasturePb.EventCategory_Kind]string)
	for _, v := range s.EventCategoryEnumList("") {
		res[pasturePb.EventCategory_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) GroupTransferReasonMap() map[int32]string {
	res := make(map[int32]string)
	for _, v := range s.TransferPenEnumList("") {
		res[v.Value] = v.Label
	}
	return res
}

func (s *StoreEntry) BarnTypeMap() map[pasturePb.PenType_Kind]string {
	res := make(map[pasturePb.PenType_Kind]string)
	for _, v := range s.BarnTypeEnumList() {
		res[pasturePb.PenType_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) UnMatingReasonsMap() map[pasturePb.UnMatingReasons_Kind]string {
	res := make(map[pasturePb.UnMatingReasons_Kind]string)
	for _, v := range s.UnMatingReasonsEnumList("") {
		res[pasturePb.UnMatingReasons_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) ForbiddenMatingReasonsMap() map[pasturePb.ForbiddenMatingReasons_Kind]string {
	res := make(map[pasturePb.ForbiddenMatingReasons_Kind]string)
	for _, v := range s.ForbiddenMatingReasonsEnumList("") {
		res[pasturePb.ForbiddenMatingReasons_Kind(v.Value)] = v.Label
	}
	return res
}

func (s *StoreEntry) eventCategoryMap() map[pasturePb.EventType_Kind]pasturePb.EventCategory_Kind {
	return map[pasturePb.EventType_Kind]pasturePb.EventCategory_Kind{
		pasturePb.EventType_Enter:             pasturePb.EventCategory_Base,
		pasturePb.EventType_Transfer_Ben:      pasturePb.EventCategory_Base,
		pasturePb.EventType_Body_Score:        pasturePb.EventCategory_Base,
		pasturePb.EventType_Pregnancy_Check:   pasturePb.EventCategory_Base,
		pasturePb.EventType_Weight:            pasturePb.EventCategory_Base,
		pasturePb.EventType_Death:             pasturePb.EventCategory_Base,
		pasturePb.EventType_Out:               pasturePb.EventCategory_Base,
		pasturePb.EventType_Dry_Milk:          pasturePb.EventCategory_Breed,
		pasturePb.EventType_Estrus:            pasturePb.EventCategory_Breed,
		pasturePb.EventType_Calving:           pasturePb.EventCategory_Breed,
		pasturePb.EventType_Seme_Time:         pasturePb.EventCategory_Breed,
		pasturePb.EventType_Mating:            pasturePb.EventCategory_Breed,
		pasturePb.EventType_Birth:             pasturePb.EventCategory_Breed,
		pasturePb.EventType_ForbiddenMating:   pasturePb.EventCategory_Breed,
		pasturePb.EventType_UnForbiddenMating: pasturePb.EventCategory_Breed,
		pasturePb.EventType_Immunication:      pasturePb.EventCategory_Health,
		pasturePb.EventType_Castrated:         pasturePb.EventCategory_Health,
		pasturePb.EventType_Insect_Repellent:  pasturePb.EventCategory_Health,
		pasturePb.EventType_Disease:           pasturePb.EventCategory_Health,
		pasturePb.EventType_Weaning:           pasturePb.EventCategory_Breed,
		pasturePb.EventType_Sale:              pasturePb.EventCategory_Other,
		pasturePb.EventType_Abort:             pasturePb.EventCategory_Other,
	}
}