63 строки
1,1 КиБ
Go
63 строки
1,1 КиБ
Go
package conf
|
|
|
|
import (
|
|
"my/schet/pkg/input/config"
|
|
"my/schet/pkg/lib"
|
|
"my/schet/pkg/schet"
|
|
|
|
"github.com/yosuke-furukawa/json5/encoding/json5"
|
|
)
|
|
|
|
type Conf struct {
|
|
path string
|
|
config *config.Config
|
|
год *schet.Год
|
|
}
|
|
|
|
func NewConf(path string) *Conf {
|
|
c := &Conf{
|
|
config: config.NewConfig(),
|
|
path: path,
|
|
}
|
|
return c
|
|
}
|
|
|
|
func (c *Conf) Загрузить(год *schet.Год) error {
|
|
c.год = год
|
|
|
|
err := c.считать()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return c.загрузить()
|
|
}
|
|
|
|
func (c *Conf) загрузить() error {
|
|
err := c.год.ЗадатьСчёт(c.config.НомерСчёта)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = c.год.ЗадатьОКТМО(c.config.OKTMO)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, d := range c.config.Действия {
|
|
err := c.год.Сделать(d.Цель, d.Квартал)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c *Conf) считать() error {
|
|
data, err := lib.ReadFile(c.path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return json5.Unmarshal([]byte(data), c.config)
|
|
}
|