mirror of
https://github.com/spurtcms/spurtcms.git
synced 2026-09-21 10:32:06 +00:00
1166 lines
31 KiB
Go
1166 lines
31 KiB
Go
package controllers
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"spurt-cms/models"
|
|
storagecontroller "spurt-cms/storage-controller"
|
|
"strconv"
|
|
"strings"
|
|
"sync"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/spurtcms/auth"
|
|
mem "github.com/spurtcms/member"
|
|
csrf "github.com/utrack/gin-csrf"
|
|
)
|
|
|
|
func MemberList(c *gin.Context) {
|
|
|
|
var (
|
|
limt int
|
|
offset int
|
|
filter mem.Filter
|
|
)
|
|
|
|
//get data from html url query
|
|
limit := c.Query("limit")
|
|
pageno, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
|
filter.Keyword = strings.Trim(c.DefaultQuery("keyword", ""), " ")
|
|
|
|
var filterflag bool
|
|
if filter.Keyword != "" {
|
|
filterflag = true
|
|
} else {
|
|
filterflag = false
|
|
}
|
|
|
|
if limit == "" {
|
|
limt = Limit
|
|
} else {
|
|
limt, _ = strconv.Atoi(limit)
|
|
}
|
|
|
|
if pageno != 0 {
|
|
offset = (pageno - 1) * limt
|
|
}
|
|
|
|
flag := false
|
|
|
|
var memberlists []mem.Tblmember
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Read, TenantId)
|
|
|
|
if perr != nil {
|
|
ErrorLog.Printf("MemberList authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("MemberList authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if permisison {
|
|
|
|
MemberConfig.DataAccess = c.GetInt("dataaccess")
|
|
MemberConfig.UserId = c.GetInt("userid")
|
|
|
|
memberlist, Total_users, err := MemberConfig.ListMembers(offset, limt, mem.Filter(filter), flag, TenantId)
|
|
if err != nil {
|
|
ErrorLog.Printf("Get data from member list error :%s", err)
|
|
}
|
|
|
|
membergroup, _ := MemberConfig.GetGroupData(TenantId)
|
|
|
|
for _, memberlistvalue := range memberlist {
|
|
|
|
memberprof, _ := MemberConfig.GetMemberProfileByMemberId(memberlistvalue.Id, TenantId)
|
|
memberlistvalue.CreatedDate = memberlistvalue.CreatedOn.In(TZONE).Format(Datelayout)
|
|
|
|
if !memberlistvalue.ModifiedOn.IsZero() {
|
|
memberlistvalue.ModifiedDate = memberlistvalue.ModifiedOn.In(TZONE).Format(Datelayout)
|
|
} else {
|
|
memberlistvalue.ModifiedDate = memberlistvalue.CreatedOn.In(TZONE).Format(Datelayout)
|
|
}
|
|
|
|
if memberlistvalue.ProfileImagePath != "" {
|
|
if memberlistvalue.StorageType == "local" {
|
|
memberlistvalue.ProfileImagePath = "/" + memberlistvalue.ProfileImagePath
|
|
} else if memberlistvalue.StorageType == "aws" {
|
|
memberlistvalue.ProfileImagePath = "/image-resize?name=" + memberlistvalue.ProfileImagePath
|
|
}
|
|
}
|
|
memberlistvalue.Claimstatus = memberprof.ClaimStatus
|
|
memberlistvalue.ProfileImage = memberprof.CompanyName
|
|
memberlistvalue.Token, _ = NewAuth.GenerateMemberToken(memberlistvalue.Id, "admin", SecretKey, TenantId)
|
|
memberlists = append(memberlists, memberlistvalue)
|
|
}
|
|
|
|
var paginationendcount = len(memberlist) + offset
|
|
paginationstartcount := offset + 1
|
|
Previous, Next, PageCount, Page := Pagination(pageno, int(Total_users), limt)
|
|
|
|
translate, _ := TranslateHandler(c)
|
|
|
|
menu := NewMenuController(c)
|
|
|
|
ModuleName, TabName, _ := ModuleRouteName(c)
|
|
|
|
storagetype, err := GetSelectedType()
|
|
if err != nil {
|
|
fmt.Printf("member list getting storagetype error: %s", err)
|
|
}
|
|
uper, _ := NewAuth.IsGranted("Member", auth.Update, TenantId)
|
|
|
|
dper, _ := NewAuth.IsGranted("Member", auth.Delete, TenantId)
|
|
|
|
|
|
c.HTML(200, "members.html", gin.H{"csrf": csrf.GetToken(c), "Pagination": PaginationData{
|
|
NextPage: pageno + 1,
|
|
PreviousPage: pageno - 1,
|
|
TotalPages: PageCount,
|
|
TwoAfter: pageno + 2,
|
|
TwoBelow: pageno - 2,
|
|
ThreeAfter: pageno + 3,
|
|
}, "Menu": menu, "Member": memberlists, "Searchtrue": filterflag, "Group": membergroup, "Count": Total_users, "Previous": Previous, "Next": Next, "Page": Page, "Limit": limt, "PageCount": PageCount, "CurrentPage": pageno, "Paginationstartcount": paginationstartcount, "Filters": filter, "Paginationendcount": paginationendcount, "title": ModuleName, "linktitle": ModuleName, "HeadTitle": translate.Memberss.Members, "translate": translate, "Filter": filter, "Membermenu": true, "membermenu": true, "Tabmenu": TabName, "Url": OwndeskUrl + CompanyProfilePath, "StorageType": storagetype.SelectedType, "permission": uper, "dpermission": dper})
|
|
|
|
}
|
|
}
|
|
|
|
func CreateMember(c *gin.Context) {
|
|
|
|
userid := c.GetInt("userid")
|
|
|
|
var MemberGroupId, _ = strconv.Atoi(c.PostForm("membergroupvalue"))
|
|
IsActive, _ := strconv.Atoi(c.PostForm("mem_activestat"))
|
|
imagedata := c.PostForm("memcrop_base64")
|
|
var imageName, imagePath, profileslug, profilename string
|
|
|
|
storagetype, err := GetSelectedType()
|
|
|
|
if err != nil {
|
|
ErrorLog.Printf("error get storage type error: %s", err)
|
|
}
|
|
|
|
if storagetype.SelectedType == "local" {
|
|
if imagedata != "" {
|
|
imageName, imagePath, err = ConvertBase64(imagedata, strings.TrimPrefix(storagetype.Local+"/user", "/"))
|
|
|
|
if err != nil {
|
|
ErrorLog.Printf("error get storage type error: %s", err)
|
|
}
|
|
}
|
|
|
|
} else if storagetype.SelectedType == "aws" {
|
|
|
|
tenantDetails, err := NewTeam.GetTenantDetails(TenantId)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
var imageByte []byte
|
|
|
|
if imagedata != "" {
|
|
imageName, imagePath, imageByte, err = ConvertBase64toByte(imagedata, "member")
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
imagePath = tenantDetails.S3FolderName + imagePath
|
|
|
|
uerr := storagecontroller.UploadCropImageS3(imageName, imagePath, imageByte)
|
|
if uerr != nil {
|
|
c.SetCookie("Alert-msg", "ERRORAWScredentialsnotfound", 3600, "", "", false, false)
|
|
c.Redirect(301, "/admin/user/")
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
frname := strings.ToLower(c.PostForm("mem_name"))
|
|
lrname := strings.ToLower(c.PostForm("mem_lname"))
|
|
|
|
if c.PostForm("mem_lname") != "" {
|
|
slug := frname + "-" + lrname
|
|
profileslug = strings.ReplaceAll(slug, " ", "-")
|
|
} else {
|
|
slug := frname
|
|
profileslug = strings.ReplaceAll(slug, " ", "-")
|
|
}
|
|
|
|
if c.PostForm("mem_lname") != "" {
|
|
profilename = frname + " " + lrname
|
|
} else {
|
|
profilename = frname
|
|
}
|
|
|
|
Member := mem.MemberCreationUpdation{
|
|
|
|
FirstName: c.PostForm("mem_name"),
|
|
LastName: c.PostForm("mem_lname"),
|
|
Email: c.PostForm("mem_email"),
|
|
MobileNo: c.PostForm("mem_mobile"),
|
|
ProfileImage: imageName,
|
|
ProfileImagePath: imagePath,
|
|
GroupId: MemberGroupId,
|
|
IsActive: IsActive,
|
|
Username: c.PostForm("mem_usrname"),
|
|
Password: c.PostForm("mem_pass"),
|
|
CreatedBy: userid,
|
|
StorageType: storagetype.SelectedType,
|
|
TenantId: TenantId,
|
|
}
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Create, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("Member create authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if permisison {
|
|
|
|
memberdata, err := MemberConfig.CreateMember(Member)
|
|
|
|
Memberprofile := mem.MemberprofilecreationUpdation{
|
|
MemberId: memberdata.Id,
|
|
ProfileSlug: profileslug,
|
|
ProfileName: profilename,
|
|
CreatedBy: userid,
|
|
TenantId: TenantId,
|
|
}
|
|
|
|
merr := MemberConfig.CreateMemberProfile(Memberprofile)
|
|
if merr != nil {
|
|
ErrorLog.Printf("memberprofile create error: %s", merr)
|
|
}
|
|
|
|
if strings.Contains(fmt.Sprint(err), "given some values is empty") {
|
|
c.SetCookie("Alert-msg", "Pleaseenterthemandatoryfields", 3600, "", "", false, false)
|
|
c.Redirect(301, "/admin/user/")
|
|
return
|
|
}
|
|
|
|
if err != nil {
|
|
ErrorLog.Printf("memberprofile create error: %s", merr)
|
|
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
|
|
c.SetCookie("Alert-msg", "alert", 3600, "", "", false, false)
|
|
c.Redirect(301, "/admin/user/")
|
|
return
|
|
}
|
|
|
|
c.SetCookie("get-toast", "Member Created Successfully", 3600, "", "", false, false)
|
|
c.SetCookie("Alert-msg", "success", 3600, "", "", false, false)
|
|
c.Redirect(301, "/admin/user/")
|
|
|
|
// var email models.TblEmailTemplate
|
|
// err = models.GetTemplates(&email, "Createmember", TenantId)
|
|
// if err != nil {
|
|
// ErrorLog.Printf("emailtemplate get error: %s", merr)
|
|
// }
|
|
|
|
if IsActive == 1 {
|
|
|
|
var web_url = os.Getenv("WEB_URL")
|
|
var url_prefix = os.Getenv("BASE_URL")
|
|
fname := c.PostForm("mem_name")
|
|
uname := c.PostForm("mem_email")
|
|
pas := c.PostForm("mem_pass")
|
|
email := c.PostForm("mem_email")
|
|
var owndeskmail = "hello@owndesk.in"
|
|
linkedin := os.Getenv("LINKEDIN")
|
|
facebook := os.Getenv("FACEBOOK")
|
|
twitter := os.Getenv("TWITTER")
|
|
youtube := os.Getenv("YOUTUBE")
|
|
insta := os.Getenv("INSTAGRAM")
|
|
|
|
data := map[string]interface{}{
|
|
|
|
"fname": fname,
|
|
"email": uname,
|
|
"Pass": pas,
|
|
"login_url": web_url,
|
|
"owndesk_logo": url_prefix + "public/img/email-icons/logo.png",
|
|
"admin_logo": url_prefix + "public/img/SpurtCMSlogo.png",
|
|
"fb_logo": url_prefix + "public/img/email-icons/facebook.png",
|
|
"linkedin_logo": url_prefix + "public/img/email-icons/linkedin.png",
|
|
"twitter_logo": url_prefix + "public/img/email-icons/x.png",
|
|
"youtube_logo": url_prefix + "public/img/email-icons/youtube.png",
|
|
"insta_log": url_prefix + "public/img/email-icons/instagram.png",
|
|
"contactemail": owndeskmail,
|
|
"facebook": facebook,
|
|
"instagram": insta,
|
|
"youtube": youtube,
|
|
"linkedin": linkedin,
|
|
"twitter": twitter,
|
|
}
|
|
|
|
// var wg sync.WaitGroup
|
|
|
|
// wg.Add(1)
|
|
|
|
Chan := make(chan string, 1)
|
|
|
|
// go MemberActivationEmail(Chan, &wg, data, email, "memberactivation")
|
|
|
|
var wg1 sync.WaitGroup
|
|
|
|
wg1.Add(1)
|
|
|
|
go MemberCreateEmail(Chan, &wg1, data, email, TenantId, "Createmember")
|
|
|
|
close(Chan)
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// edit member
|
|
func EditMember(c *gin.Context) {
|
|
|
|
var (
|
|
lastn string
|
|
NameString string
|
|
firstn string
|
|
)
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Update, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("edit member authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if permisison {
|
|
|
|
pageno, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
|
|
|
|
var id, _ = strconv.Atoi(c.Param("id"))
|
|
|
|
group, _ := MemberConfig.GetGroupData(TenantId)
|
|
member, _ := MemberConfig.GetMemberDetails(id, TenantId)
|
|
memberprof, _ := MemberConfig.GetMemberProfileByMemberId(id, TenantId)
|
|
|
|
if member.FirstName != "" {
|
|
lastn = strings.ToUpper(member.FirstName[:1])
|
|
}
|
|
if member.LastName != "" {
|
|
lastn += strings.ToUpper(member.LastName[:1])
|
|
}
|
|
|
|
member.NameString = firstn + lastn
|
|
translate, _ := TranslateHandler(c)
|
|
|
|
menu := NewMenuController(c)
|
|
|
|
if memberprof.CompanyName != "" {
|
|
NameString = memberprof.CompanyName[:1]
|
|
}
|
|
|
|
if member.ProfileImagePath != "" {
|
|
if member.StorageType == "local" {
|
|
member.ProfileImagePath = "/" + member.ProfileImagePath
|
|
} else if member.StorageType == "aws" {
|
|
member.ProfileImagePath = "/image-resize?name=" + member.ProfileImagePath
|
|
}
|
|
}
|
|
|
|
if memberprof.CompanyLogo != "" {
|
|
if memberprof.StorageType == "local" {
|
|
memberprof.CompanyLogo = "/" + memberprof.CompanyLogo
|
|
} else if memberprof.StorageType == "aws" {
|
|
memberprof.CompanyLogo = "/image-resize?name=" + memberprof.CompanyLogo
|
|
}
|
|
}
|
|
|
|
ModuleName, TabName, _ := ModuleRouteName(c)
|
|
|
|
// fmt.Println(ModuleName, "modulename")
|
|
|
|
storagetype, err := GetSelectedType()
|
|
if err != nil {
|
|
fmt.Printf("member list getting storagetype error: %s", err)
|
|
}
|
|
|
|
c.HTML(200, "memberprofile.html", gin.H{"csrf": csrf.GetToken(c), "Menu": menu, "Member": member, "Group": group, "title": ModuleName, "HeadTitle": translate.Memberss.Members, "translate": translate, "Membermenu": true, "membermenu": true, "MemberProfile": memberprof, "NameString": NameString, "Tabmenu": TabName, "CurrentPage": pageno, "StorageType": storagetype.SelectedType})
|
|
|
|
}
|
|
}
|
|
|
|
// update member
|
|
func UpdateMember(c *gin.Context) {
|
|
|
|
userid := c.GetInt("userid")
|
|
member_id, _ := strconv.Atoi(c.PostForm("mem_id"))
|
|
pageno := c.PostForm("memgrbpageno")
|
|
|
|
var url string
|
|
if pageno != "" {
|
|
url = "/admin/user/?page=" + pageno
|
|
} else {
|
|
url = "/admin/user/"
|
|
}
|
|
|
|
var MemberGroupId, _ = strconv.Atoi(c.PostForm("membergroupvalue"))
|
|
fmt.Println("mem grp id", MemberGroupId)
|
|
IsActive, _ := strconv.Atoi(c.PostForm("mem_activestat"))
|
|
// mailstatus, _ := strconv.Atoi(c.PostForm("mem_emailactive"))
|
|
imagedata := c.PostForm("crop_data")
|
|
|
|
var imageName, imagePath string
|
|
|
|
companylogo := c.PostForm("crop_data2")
|
|
var companystoragepath string
|
|
|
|
storagetype, err := GetSelectedType()
|
|
if err != nil {
|
|
ErrorLog.Printf("error get storage type error: %s", err)
|
|
}
|
|
|
|
if storagetype.SelectedType == "local" {
|
|
|
|
if imagedata != "" {
|
|
imageName, imagePath, err = ConvertBase64(imagedata, strings.TrimPrefix(storagetype.Local+"/user", "/"))
|
|
if err != nil {
|
|
ErrorLog.Printf("update member convertbase64 error: %s", err)
|
|
}
|
|
}
|
|
|
|
if companylogo != "" {
|
|
|
|
_, companystoragepath, _ = ConvertBase64(companylogo, strings.TrimPrefix(storagetype.Local+"/user/company", "/"))
|
|
|
|
}
|
|
|
|
} else if storagetype.SelectedType == "aws" {
|
|
tenantDetails, err := NewTeam.GetTenantDetails(TenantId)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
if imagedata != "" {
|
|
|
|
var (
|
|
imageByte []byte
|
|
err error
|
|
)
|
|
|
|
imageName, imagePath, imageByte, err = ConvertBase64toByte(imagedata, "member")
|
|
if err != nil {
|
|
ErrorLog.Printf("convert base 64 to byte error : %s", err)
|
|
}
|
|
|
|
imagePath = tenantDetails.S3FolderName + imagePath
|
|
|
|
uerr := storagecontroller.UploadCropImageS3(imageName, imagePath, imageByte)
|
|
if uerr != nil {
|
|
c.SetCookie("Alert-msg", "ERRORAWScredentialsnotfound", 3600, "", "", false, false)
|
|
c.Redirect(301, "/admin/user/")
|
|
return
|
|
}
|
|
}
|
|
|
|
if companylogo != "" {
|
|
tenantDetails, err := NewTeam.GetTenantDetails(TenantId)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
var imageByte []byte
|
|
|
|
_, companystoragepath, imageByte, err = ConvertBase64toByte(companylogo, "member/company")
|
|
if err != nil {
|
|
ErrorLog.Printf("convert base 64 to byte error : %s", err)
|
|
}
|
|
|
|
companystoragepath = tenantDetails.S3FolderName + companystoragepath
|
|
|
|
uerr := storagecontroller.UploadCropImageS3(imageName, companystoragepath, imageByte)
|
|
if uerr != nil {
|
|
c.SetCookie("Alert-msg", "ERRORAWScredentialsnotfound", 3600, "", "", false, false)
|
|
c.Redirect(301, "/admin/user/")
|
|
return
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
profileid, _ := strconv.Atoi(c.PostForm("profileid"))
|
|
// claimstatus, _ := strconv.Atoi(c.PostForm("com_activestat"))
|
|
|
|
Member := mem.MemberCreationUpdation{
|
|
FirstName: c.PostForm("mem_name"),
|
|
LastName: c.PostForm("mem_lname"),
|
|
Email: c.PostForm("mem_email"),
|
|
MobileNo: c.PostForm("mem_mobile"),
|
|
ProfileImage: imageName,
|
|
ProfileImagePath: imagePath,
|
|
GroupId: MemberGroupId,
|
|
IsActive: IsActive,
|
|
ModifiedBy: userid,
|
|
Username: c.PostForm("mem_usrname"),
|
|
Password: c.PostForm("mem_pass"),
|
|
StorageType: storagetype.SelectedType,
|
|
}
|
|
|
|
Memberprofile := mem.MemberprofilecreationUpdation{
|
|
MemberId: member_id,
|
|
CompanyName: c.PostForm("companyname"),
|
|
CompanyLocation: c.PostForm("companylocation"),
|
|
ProfileName: c.PostForm("profilename"),
|
|
ProfileSlug: c.PostForm("profilepage"),
|
|
About: c.PostForm("aboutcompany"),
|
|
ProfileId: profileid,
|
|
CompanyLogo: companystoragepath,
|
|
LinkedIn: c.PostForm("linkedin"),
|
|
Website: c.PostForm("website"),
|
|
Twitter: c.PostForm("twitter"),
|
|
SeoTitle: c.PostForm("metaTitle"),
|
|
SeoKeyword: c.PostForm("metaKeyword"),
|
|
SeoDescription: c.PostForm("metaDescription"),
|
|
ModifiedBy: userid,
|
|
StorageType: storagetype.SelectedType,
|
|
}
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Update, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("Update Member authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
err = MemberConfig.UpdateMember(Member, member_id, TenantId)
|
|
if err != nil {
|
|
ErrorLog.Printf("update member error: %s", perr)
|
|
}
|
|
|
|
merr := MemberConfig.UpdateMemberProfile(Memberprofile, TenantId)
|
|
if merr != nil {
|
|
ErrorLog.Printf("update member profile error: %s", perr)
|
|
}
|
|
|
|
// var email models.TblEmailTemplate
|
|
// err = models.GetTemplates(&email, "Owndesk", TenantId)
|
|
// if err != nil {
|
|
// ErrorLog.Printf("emailtemplate get error: %s", err)
|
|
// }
|
|
|
|
// if mailstatus == 1 && claimstatus == 1 && email.IsActive == 1 {
|
|
|
|
// email := c.PostForm("mem_email")
|
|
// var url_prefix = os.Getenv("BASE_URL")
|
|
|
|
// data := map[string]interface{}{
|
|
// "client_name": c.PostForm("mem_name"),
|
|
// "company_name": c.PostForm("companyname"),
|
|
// "logo": url_prefix + "public/img/email-icons/logo.png",
|
|
// "fb_logo": url_prefix + "public/img/email-icons/facebook.png",
|
|
// "linkedin_logo": url_prefix + "public/img/email-icons/linkedin.png",
|
|
// "spacex_logo": url_prefix + "public/img/email-icons/x.png",
|
|
// "youtube_logo": url_prefix + "public/img/email-icons/youtube.png",
|
|
// "instagram_logo": url_prefix + "public/img/email-icons/instagram.png",
|
|
// }
|
|
|
|
// var wg sync.WaitGroup
|
|
|
|
// wg.Add(1)
|
|
|
|
// Chan := make(chan string, 1)
|
|
|
|
// go OwndeskmemberEmail(Chan, &wg, data, email, "Owndesk")
|
|
|
|
// close(Chan)
|
|
|
|
// }
|
|
|
|
if strings.Contains(fmt.Sprint(err), "given some values is empty") {
|
|
ErrorLog.Printf("member update mandatory fields error: %s", err)
|
|
c.SetCookie("Alert-msg", "Pleaseenterthemandatoryfields", 3600, "", "", false, false)
|
|
c.Redirect(301, url)
|
|
return
|
|
}
|
|
|
|
if err != nil {
|
|
fmt.Println("member errorsss")
|
|
ErrorLog.Printf("member update error: %s", err)
|
|
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
|
|
c.SetCookie("Alert-msg", "alert", 3600, "", "", false, false)
|
|
c.Redirect(301, url)
|
|
return
|
|
}
|
|
|
|
c.SetCookie("get-toast", "Member Updated Successfully", 3600, "", "", false, false)
|
|
fmt.Println("member updayte")
|
|
// c.SetCookie("Alert-msg", "success", 3600, "", "", false, false)
|
|
c.Redirect(301, url)
|
|
|
|
}
|
|
|
|
// delete member
|
|
func DeleteMember(c *gin.Context) {
|
|
var id, _ = strconv.Atoi(c.Query("id"))
|
|
pageno := c.Query("page")
|
|
var url string
|
|
|
|
if pageno != "" {
|
|
url = "/admin/user/?page=" + pageno
|
|
} else {
|
|
url = "/admin/user/"
|
|
}
|
|
|
|
userid := c.GetInt("userid")
|
|
|
|
permission, perr := NewAuth.IsGranted("Member", auth.Delete, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("rolescreate authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if !permission {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
err := MemberConfig.DeleteMember(id, userid, TenantId)
|
|
if err != nil {
|
|
ErrorLog.Printf("member delete error: %s", err)
|
|
c.SetCookie("Alert-msg", ErrInternalServerError, 3600, "", "", false, false)
|
|
c.Redirect(301, url)
|
|
return
|
|
}
|
|
|
|
_, totalRecords, _ := MemberConfig.ListMembers(0, 100, mem.Filter{}, false, TenantId)
|
|
|
|
recordsPerPage := Limit
|
|
totalPages := (int(totalRecords) + recordsPerPage - 1) / recordsPerPage
|
|
|
|
currentPage := 1
|
|
if pageno != "" {
|
|
currentPage, _ = strconv.Atoi(pageno)
|
|
}
|
|
|
|
if currentPage > totalPages && totalPages > 0 {
|
|
|
|
url = "/admin/user/?page=" + strconv.Itoa(totalPages)
|
|
}
|
|
|
|
c.SetCookie("get-toast", "Member Deleted Successfully", 3600, "", "", false, false)
|
|
c.SetCookie("Alert-msg", "success", 3600, "", "", false, false)
|
|
|
|
if totalRecords == 0 {
|
|
url = "/admin/user/?page=1"
|
|
}
|
|
|
|
c.Redirect(301, url)
|
|
}
|
|
|
|
// check email
|
|
func CheckEmailInMember(c *gin.Context) {
|
|
|
|
userid, _ := strconv.Atoi(c.PostForm("id"))
|
|
|
|
email := c.PostForm("email")
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Read, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("member check email authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if permisison {
|
|
|
|
flg, err := MemberConfig.CheckEmailInMember(userid, email, TenantId)
|
|
|
|
if err != nil {
|
|
ErrorLog.Printf("member check email error: %s", err)
|
|
json.NewEncoder(c.Writer).Encode(false)
|
|
return
|
|
}
|
|
|
|
json.NewEncoder(c.Writer).Encode(flg)
|
|
|
|
}
|
|
}
|
|
|
|
// check number in member
|
|
func CheckNumberInMember(c *gin.Context) {
|
|
|
|
userid, _ := strconv.Atoi(c.PostForm("id"))
|
|
|
|
number := c.PostForm("number")
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Read, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("member check number authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if permisison {
|
|
flg, err := MemberConfig.CheckNumberInMember(userid, number, TenantId)
|
|
if err != nil {
|
|
ErrorLog.Printf("member check number error: %s", err)
|
|
json.NewEncoder(c.Writer).Encode(false)
|
|
return
|
|
}
|
|
json.NewEncoder(c.Writer).Encode(flg)
|
|
|
|
}
|
|
}
|
|
|
|
// check profile name in member
|
|
func CheckProfileNameInMember(c *gin.Context) {
|
|
|
|
userid, _ := strconv.Atoi(c.PostForm("id"))
|
|
|
|
Profilename := c.PostForm("name")
|
|
|
|
flg := false
|
|
|
|
if Profilename != "" {
|
|
|
|
flg2, err := MemberConfig.CheckProfileSlugInMember(userid, Profilename, TenantId)
|
|
|
|
flg = flg2
|
|
if err != nil {
|
|
ErrorLog.Printf("member profile name error: %s", err)
|
|
json.NewEncoder(c.Writer).Encode(false)
|
|
return
|
|
}
|
|
|
|
json.NewEncoder(c.Writer).Encode(flg)
|
|
|
|
return
|
|
}
|
|
|
|
json.NewEncoder(c.Writer).Encode(flg)
|
|
|
|
}
|
|
|
|
func CheckNameInMember(c *gin.Context) {
|
|
|
|
userid, _ := strconv.Atoi(c.PostForm("id"))
|
|
|
|
name := c.PostForm("name")
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Read, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("member check name authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if permisison {
|
|
|
|
flg, err := MemberConfig.CheckNameInMember(userid, name, TenantId)
|
|
|
|
if err != nil {
|
|
ErrorLog.Printf("member checkname error: %s", err)
|
|
json.NewEncoder(c.Writer).Encode(false)
|
|
return
|
|
}
|
|
|
|
json.NewEncoder(c.Writer).Encode(flg)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*permission Member status*/
|
|
func MemberStatus(c *gin.Context) {
|
|
|
|
userid := c.GetInt("userid")
|
|
|
|
id, _ := strconv.Atoi(c.Request.PostFormValue("id"))
|
|
val, _ := strconv.Atoi(c.Request.PostFormValue("isactive"))
|
|
fmt.Println("datas", userid, id, val)
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Update, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("member status authorization error: %s", perr)
|
|
}
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if permisison {
|
|
|
|
flg, err := MemberConfig.MemberStatus(id, val, userid, TenantId)
|
|
|
|
if err != nil {
|
|
ErrorLog.Printf("member status change error: %s", perr)
|
|
json.NewEncoder(c.Writer).Encode(flg)
|
|
|
|
} else {
|
|
json.NewEncoder(c.Writer).Encode(flg)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
func MultiSelectDeleteMember(c *gin.Context) {
|
|
|
|
var memberdata []map[string]string
|
|
|
|
if err := json.Unmarshal([]byte(c.Request.PostFormValue("memberids")), &memberdata); err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
var Memberids []int
|
|
|
|
for _, val := range memberdata {
|
|
memberid, _ := strconv.Atoi(val["memberid"])
|
|
Memberids = append(Memberids, memberid)
|
|
}
|
|
|
|
userid := c.GetInt("userid")
|
|
pageno := c.PostForm("page")
|
|
|
|
var url string
|
|
if pageno != "" {
|
|
url = "/admin/user/?page=" + pageno
|
|
} else {
|
|
url = "/admin/user/"
|
|
}
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Delete, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("member multiple delete authorization error: %s", perr)
|
|
}
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.JSON(200, gin.H{"value": false, "url": "/403-page"})
|
|
return
|
|
}
|
|
|
|
if permisison {
|
|
|
|
_, err := MemberConfig.MultiSelectedMemberDelete(Memberids, userid, TenantId)
|
|
if err != nil {
|
|
log.Println(err)
|
|
c.JSON(200, gin.H{"value": false})
|
|
return
|
|
}
|
|
_, totalRecords, _ := MemberConfig.ListMembers(0, 100, mem.Filter{}, false, TenantId)
|
|
|
|
recordsPerPage := Limit
|
|
totalPages := (int(totalRecords) + recordsPerPage - 1) / recordsPerPage
|
|
|
|
fmt.Println(totalPages, "totalpagesss")
|
|
|
|
currentPage := 1
|
|
if pageno != "" {
|
|
currentPage, _ = strconv.Atoi(pageno)
|
|
}
|
|
|
|
if currentPage > totalPages && totalPages > 0 {
|
|
|
|
url = "/admin/user/?page=" + strconv.Itoa(totalPages)
|
|
}
|
|
|
|
if totalRecords == 0 {
|
|
url = "/admin/user/?page=1"
|
|
}
|
|
c.JSON(200, gin.H{"value": true, "url": url})
|
|
}
|
|
|
|
}
|
|
|
|
// multi select member status
|
|
func MultiSelectMembersStatus(c *gin.Context) {
|
|
|
|
var (
|
|
memberdata []map[string]string
|
|
memberids []int
|
|
statusint int
|
|
status int
|
|
)
|
|
|
|
if err := json.Unmarshal([]byte(c.Request.PostFormValue("memberids")), &memberdata); err != nil {
|
|
fmt.Println(err)
|
|
}
|
|
|
|
for _, val := range memberdata {
|
|
|
|
memberid, _ := strconv.Atoi(val["memberid"])
|
|
statusint, _ = strconv.Atoi(val["status"])
|
|
if statusint == 0 {
|
|
status = 1
|
|
} else if statusint == 1 {
|
|
status = 0
|
|
}
|
|
|
|
memberids = append(memberids, memberid)
|
|
}
|
|
|
|
pageno := c.PostForm("page")
|
|
|
|
var url string
|
|
if pageno != "" {
|
|
url = "/admin/user/?page=" + pageno
|
|
} else {
|
|
url = "/admin/user/"
|
|
}
|
|
userid := c.GetInt("userid")
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Update, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("member multiple status authorization error: %s", perr)
|
|
}
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if permisison {
|
|
_, err := MemberConfig.MultiSelectMembersStatus(memberids, status, userid, TenantId)
|
|
if err != nil {
|
|
log.Println(err)
|
|
c.JSON(200, gin.H{"value": false})
|
|
return
|
|
}
|
|
|
|
c.JSON(200, gin.H{"value": true, "status": status, "url": url})
|
|
}
|
|
|
|
}
|
|
|
|
func CheckProfileSlugInMember(c *gin.Context) {
|
|
|
|
//get values from html from data
|
|
userid, _ := strconv.Atoi(c.PostForm("id"))
|
|
ProfileSlug := c.PostForm("name")
|
|
flg := false
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Read, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("member check profile slug authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
if ProfileSlug != "" {
|
|
flg2, err := MemberConfig.CheckProfileSlugInMember(userid, ProfileSlug, TenantId) //check memberprofile slug
|
|
flg = flg2
|
|
if err != nil {
|
|
ErrorLog.Printf("memberprofileslug error: %s", err)
|
|
json.NewEncoder(c.Writer).Encode(false)
|
|
return
|
|
}
|
|
json.NewEncoder(c.Writer).Encode(flg)
|
|
return
|
|
}
|
|
json.NewEncoder(c.Writer).Encode(flg)
|
|
}
|
|
|
|
// member claim status if status enable then only claim email send
|
|
func ActivateClaimStatus(c *gin.Context) {
|
|
|
|
memberid, err1 := strconv.Atoi(c.Request.PostFormValue("memberid"))
|
|
if err1 != nil {
|
|
ErrorLog.Printf("cannot parse memberid into integer error: %s", err1)
|
|
}
|
|
|
|
claimstatus := c.Request.PostFormValue("claimb1")
|
|
|
|
var claimint int
|
|
if claimstatus == "on" {
|
|
claimint = 1
|
|
} else {
|
|
claimint = 0
|
|
}
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Read, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("member check profile slug authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
member, err := MemberConfig.GetMemberDetails(memberid, TenantId)
|
|
if err != nil {
|
|
ErrorLog.Printf("get member details error: %s", err)
|
|
}
|
|
|
|
memberprof, err := MemberConfig.GetMemberProfileByMemberId(memberid, TenantId)
|
|
if err != nil {
|
|
ErrorLog.Printf("get member profiles details error: %s", err)
|
|
}
|
|
|
|
currenttime, _ := time.Parse("2006-01-02 15:04:05", time.Now().Format("2006-01-02 15:04:05"))
|
|
|
|
if err := DB.Debug().Table("tbl_member_profiles").Where("member_id=?", memberid).UpdateColumns(map[string]interface{}{
|
|
"claim_status": claimint, "modified_by": c.GetInt("userid"), "claim_date": currenttime}).Error; err != nil {
|
|
ErrorLog.Printf("Activate claim query status error: %s", err)
|
|
}
|
|
|
|
if member.IsActive == 0 {
|
|
ErrorLog.Println("member status not enable can't send mail")
|
|
c.SetCookie("get-toast", "Member Claim Updated Successfully", 3600, "", "", false, false)
|
|
c.SetCookie("Alert-msg", "success", 3600, "", "", false, false)
|
|
c.Redirect(301, "/admin/user")
|
|
return
|
|
}
|
|
|
|
var email models.TblEmailTemplate
|
|
err = models.GetTemplates(&email, "Owndesk", TenantId)
|
|
if err != nil {
|
|
ErrorLog.Printf("emailtemplate get error: %s", err)
|
|
}
|
|
|
|
if email.IsActive == 1 && claimint == 1 {
|
|
Token, _ := NewAuth.GenerateMemberToken(member.Id, "admin", SecretKey, TenantId)
|
|
SendMemberClaimEmail(member.Email, member.FirstName+" "+member.LastName, memberprof.CompanyName, Token, memberprof.ProfileSlug)
|
|
} else {
|
|
WarnLog.Println("email claim status not enabled")
|
|
}
|
|
|
|
c.SetCookie("get-toast", "Member Claim Updated Successfully", 3600, "", "", false, false)
|
|
c.SetCookie("Alert-msg", "success", 3600, "", "", false, false)
|
|
c.Redirect(301, "/admin/user")
|
|
}
|
|
|
|
// Get member profile
|
|
func GetMemberProfileByMemberId(c *gin.Context) {
|
|
|
|
memberid, _ := strconv.Atoi(c.PostForm("memberid"))
|
|
|
|
permisison, perr := NewAuth.IsGranted("Member", auth.Read, TenantId)
|
|
if perr != nil {
|
|
ErrorLog.Printf("member check profile slug authorization error: %s", perr)
|
|
}
|
|
|
|
if !permisison {
|
|
ErrorLog.Printf("Member authorization error: %s", perr)
|
|
c.Redirect(301, "/403-page")
|
|
return
|
|
}
|
|
|
|
member, err := MemberConfig.GetMemberDetails(memberid, TenantId)
|
|
if err != nil {
|
|
ErrorLog.Printf("get member details error: %s", err)
|
|
json.NewEncoder(c.Writer).Encode(gin.H{"flg": false})
|
|
return
|
|
}
|
|
|
|
memberprof, err := MemberConfig.GetMemberProfileByMemberId(memberid, TenantId)
|
|
if err != nil {
|
|
json.NewEncoder(c.Writer).Encode(gin.H{"flg": false})
|
|
ErrorLog.Printf("get member profiles details error: %s", err)
|
|
}
|
|
|
|
if member.ProfileImagePath != "" {
|
|
if member.StorageType == "local" {
|
|
member.ProfileImagePath = "/" + member.ProfileImagePath
|
|
} else if member.StorageType == "aws" {
|
|
member.ProfileImagePath = "/image-resize?name=" + member.ProfileImagePath
|
|
}
|
|
}
|
|
|
|
if memberprof.CompanyLogo != "" {
|
|
if memberprof.StorageType == "local" {
|
|
memberprof.CompanyLogo = "/" + memberprof.CompanyLogo
|
|
} else if memberprof.StorageType == "aws" {
|
|
memberprof.CompanyLogo = "/image-resize?name=" + memberprof.CompanyLogo
|
|
}
|
|
}
|
|
|
|
if !memberprof.ClaimDate.IsZero() {
|
|
memberprof.Website = memberprof.ClaimDate.Format("02 Jan 2006")
|
|
} else {
|
|
memberprof.Website = time.Now().Format("02 Jan 2006")
|
|
}
|
|
|
|
currenttime := time.Now().In(TZONE).Format("02 Jan 2006")
|
|
fmt.Println("dsfdsfs", member)
|
|
|
|
fmt.Println("final")
|
|
|
|
json.NewEncoder(c.Writer).Encode(gin.H{"member": member, "memberprofile": memberprof, "flg": true, "currenttime": currenttime})
|
|
|
|
}
|
|
|
|
// send mail claim
|
|
func SendMemberClaimEmail(email, memberName, companyName string, Token string, profileslug string) {
|
|
|
|
var url_prefix = os.Getenv("BASE_URL")
|
|
|
|
data := map[string]interface{}{
|
|
"client_name": memberName,
|
|
"company_name": companyName,
|
|
"logo": url_prefix + "public/img/email-icons/logo.png",
|
|
"fb_logo": url_prefix + "public/img/email-icons/facebook.png",
|
|
"linkedin_logo": url_prefix + "public/img/email-icons/linkedin.png",
|
|
"spacex_logo": url_prefix + "public/img/email-icons/x.png",
|
|
"youtube_logo": url_prefix + "public/img/email-icons/youtube.png",
|
|
"instagram_logo": url_prefix + "public/img/email-icons/instagram.png",
|
|
"Link": os.Getenv("OWNDESK_URL") + "company/" + profileslug + "/" + Token,
|
|
"Slug": profileslug,
|
|
}
|
|
|
|
var wg sync.WaitGroup
|
|
|
|
wg.Add(1)
|
|
|
|
Chan := make(chan string, 1)
|
|
|
|
go OwndeskmemberEmail(Chan, &wg, data, email, "Owndesk")
|
|
|
|
close(Chan)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|