package app import ( "database/sql" "reflect" "time" "code.tnxs.net/taxnexus/lib/api/crm/crm_models" "github.com/google/uuid" ) // ReMarshalCompany converts microservice Models object to swagger func ReMarshalCompany(p interface{}) crm_models.Company { // reflect input and set to crm_models type t := reflect.ValueOf(&p).Elem() s := crm_models.Company{} r := reflect.ValueOf(&s).Elem() for i := 0; i < t.NumField(); i++ { r.Field(i).Set(t.Field(i)) } return s } // UnMarshalCompany decodes swagger to first class object func UnMarshalCompany(s *crm_models.Company, principal *User) *Company { if s.ID == "" { s.ID = uuid.New().String() } createdDate, e0 := time.Parse(dateTimeFormat, s.CreatedDate) lastModfiedDate, e1 := time.Parse(dateTimeFormat, s.LastModifiedDate) dateClosed, e2 := time.Parse(dateTimeFormat, s.DateClosed) return &Company{ ID: s.ID, BillingContact: GetContact(s.BillingContactID, principal), AccountID: s.AccountID, AccountNumberPrefix: s.AccountNumberPrefix, BillingAddress: UnMarshalCrmAddress(s.BillingAddress), BillingAdvice: s.BillingAdvice, BillingContactID: s.BillingContactID, BillingEmail: s.BillingEmail, BillingPhone: s.BillingPhone, BillingWebsite: s.BillingWebsite, CoaTemplateID: s.COATemplateID, ColorAccent1: s.ColorAccent1, ColorAccent2: s.ColorAccent2, ColorPrimary: s.ColorPrimary, CreatedByID: s.CreatedByID, CustomerSuccessID: s.CustomerSuccessID, CustomerSuccess: GetContact(s.CustomerSuccessID, principal), DefaultAddress: UnMarshalCrmAddress(s.DefaultAddress), DefaultCompany: s.DefaultCompany, FontBody: s.FontBody, FontHeading: s.FontBody, FontHeadingNarrow: s.FontHeadingNarrow, FontLink: s.FontLink, FontMono: s.FontMono, International: s.International, LastAccountNumber: s.LastAccountNumber, LastModifiedByID: s.LastModifiedByID, LastTaxtypeNumber: s.LastTaxTypeNumber, Logo: s.Logo, Name: s.Name, OwnerID: s.OwnerID, Preparer: GetContact(s.PreparerID, principal), PreparerID: s.PreparerID, PricebookID: s.PricebookID, TenantID: s.TenantID, UserTechLead: GetContact(s.UserTechLeadID, principal), UserTechLeadID: s.UserTechLeadID, CreatedDate: sql.NullTime{ Time: createdDate, Valid: e0 == nil, }, LastModifiedDate: sql.NullTime{ Time: lastModfiedDate, Valid: e1 == nil, }, DateClosed: sql.NullTime{ Time: dateClosed, Valid: e2 == nil, }, } } // MarshalToSwagger encodes a first class object to swagger func (obj *Company) MarshalToSwagger() *crm_models.Company { return &crm_models.Company{ ID: obj.ID, AccountID: obj.AccountID, AccountNumberPrefix: obj.AccountNumberPrefix, BillingAddress: obj.BillingAddress.MarshalToCrm(), BillingAdvice: obj.BillingAdvice, BillingContactID: obj.BillingContactID, BillingEmail: obj.BillingEmail, BillingPhone: obj.BillingPhone, BillingWebsite: obj.BillingWebsite, COATemplateID: obj.CoaTemplateID, ColorAccent1: obj.ColorAccent1, ColorAccent2: obj.ColorAccent2, ColorPrimary: obj.ColorPrimary, CreatedByID: obj.CreatedByID, CreatedDate: obj.CreatedDate.Time.Format(dateTimeFormat), CustomerSuccessID: obj.CustomerSuccessID, DateClosed: obj.DateClosed.Time.Format(dateTimeFormat), DefaultAddress: obj.DefaultAddress.MarshalToCrm(), DefaultCompany: obj.DefaultCompany, FontBody: obj.FontBody, FontHeading: obj.FontHeading, FontHeadingNarrow: obj.FontHeadingNarrow, FontLink: obj.FontLink, FontMono: obj.FontMono, International: obj.International, LastAccountNumber: obj.LastAccountNumber, LastModifiedByID: obj.LastModifiedByID, LastModifiedDate: obj.LastModifiedDate.Time.Format(dateTimeFormat), LastTaxTypeNumber: obj.LastTaxtypeNumber, Logo: obj.Logo, Name: obj.Name, OwnerID: obj.OwnerID, PreparerID: obj.PreparerID, PricebookID: obj.PricebookID, TenantID: obj.TenantID, UserTechLeadID: obj.UserTechLeadID, } }