formular.go 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package asuModels
  2. //go:generate reform --gofmt=false
  3. import (
  4. "fmt"
  5. "github.com/revel/revel"
  6. "github.com/xaionaro-go/extime"
  7. "html/template"
  8. )
  9. //reform:formular
  10. type Formular struct {
  11. EmpGUID int `reform:"EmpGUID" view:"readonly"`
  12. StfCardId int `reform:"StfCardId" view:"readonly"`
  13. PersonnelNumber int `reform:"TabN" view:"readonly"`
  14. FormularType string `reform:"Tip_formular" view:"readonly"`
  15. StartDate *extime.Date `reform:"StartDate" view:"readonly"`
  16. EndDate *extime.Date `reform:"EndDate" view:"readonly"`
  17. AppointmentName string `reform:"Name" view:"readonly"`
  18. AppointmentShortName *string `reform:"Prof_BriefName" view:"readonly"`
  19. WorkStart *extime.Date `reform:"Start_work" view:"readonly"`
  20. Category string `reform:"Category" view:"readonly"`
  21. UnitName string `reform:"Name_podr" view:"readonly"`
  22. UnitShortName *string `reform:"Podr_BriefName" view:"readonly"`
  23. UnitCode string `reform:"Code" view:"readonly"`
  24. ChiefName *string `reform:"ChiefName" view:"readonly"`
  25. Rate *float64 `reform:"RateAmount" view:"readonly"`
  26. IsHead *bool `reform:"IsHead" view:"readonly"`
  27. UnitId int `reform:"OrgDiv" view:"readonly"`
  28. Unit Unit `reform:"-"`
  29. Person Person `reform:"-"`
  30. //PersNumber *int `reform:"PersNumber"`
  31. //FormularTypeCode int `reform:"Cod_Tip_formular"`
  32. //CategoryCode int `reform:"Cod_Catgory"`
  33. //WorkEnd *string `reform:"End_work"`
  34. //Profession int `reform:"Profession"`
  35. //Lastname string `reform:"SurName"`
  36. //Firstname string `reform:"FirstName"`
  37. //Patronymic string `reform:"MiddleName"`
  38. //OrgInn string `reform:"OrgInn"`
  39. //DivInn string `reform:"DivInn"`
  40. //Sex int `reform:"Sex"`
  41. //WorkState int `reform:"WorkState"`
  42. //ProfKvalLevel string `reform:"ProfKvalLevel"`
  43. //ProfKvalGroup int `reform:"ProfKvalGroup"`
  44. //EmpCardId string `reform:"EmpCardId"`
  45. //VacDays *int `reform:"VacDays"`
  46. //ExtraVacDays *int `reform:"ExtraVacDays"`
  47. }
  48. func (f Formular) View_readTag(fieldName string, parent interface{}, args []interface{}) template.HTML {
  49. unitName := f.UnitName
  50. if f.UnitShortName != nil {
  51. unitName = *f.UnitShortName + " (" + unitName + ")"
  52. }
  53. return template.HTML(fmt.Sprintf(`<a href="/asu/formulars/%v?fullscreen=true">%v — %v: [%v] %v — %v</a>`, f.StfCardId, f.StartDate, f.EndDate, f.UnitCode, f.AppointmentName, unitName))
  54. }
  55. func (f *Formular) PrepareUnit() *Formular {
  56. var err error
  57. f.Unit, err = UnitSQL.First(Unit{Id: f.UnitId})
  58. if err != nil {
  59. revel.ERROR.Printf("Got error: %v", err.Error())
  60. }
  61. return f
  62. }
  63. func (f *Formular) PreparePerson() *Formular {
  64. var err error
  65. f.Person, err = PersonSQL.First(Person{EmpGUID: f.EmpGUID})
  66. if err != nil {
  67. revel.ERROR.Printf("Got error: %v", err.Error())
  68. }
  69. return f
  70. }
  71. func (f Formular) IsActive() bool {
  72. now := extime.Now()
  73. startIsGood := false
  74. endIsGood := false
  75. if f.StartDate != nil {
  76. startIsGood = f.StartDate.UnixNano() <= now.UnixNano()
  77. }
  78. if f.EndDate == nil {
  79. endIsGood = true
  80. } else {
  81. endIsGood = f.EndDate.UnixNano() + 3600 * 24 >= now.UnixNano()
  82. }
  83. return startIsGood && endIsGood
  84. }