Ejemplo n.º 1
0
        //Delete Client and Billing Contact
        public static int DeleteClientContact(int clientcontactid, int billingcontactid, int clientid, int userid)
        {
            var dc     = new ClientContactsDataContext();
            var result = dc.S1_ClientContacts_DeleteContact(billingcontactid, clientcontactid, userid, clientid).SingleOrDefault().ErrorCode.GetValueOrDefault();

            return(result);
        }
Ejemplo n.º 2
0
        //Return one client contact that matches _UserID.  Return an empty ClientContact if the _UserID is not found.
        public static ClientContact GetClientContactFromUserID(int _UserID)
        {
            ClientContact             clientContacts = new ClientContact();
            ClientContactsDataContext dc             = new ClientContactsDataContext();
            var item = dc.S1_ClientContacts_GetClientContactFromUserID(_UserID).FirstOrDefault();

            if (item != null)
            {
                clientContacts = new ClientContact(item.ClientContactID, item.ClientContactName, item.ClientContactFirstName, item.ClientContactLastName,
                                                   item.ClientContactTitle, item.ClientContactAddress1, item.ClientContactAddress2, item.ClientContactCity, item.ClientContactStateCode,
                                                   item.ClientContactZIP, item.ClientContactBusinessPhone, item.ClientContactCellPhone, item.ClientContactFax, item.ClientContactEmail,
                                                   item.BillingContactName, item.IsPrimaryBillingContact1, item.OnlyShowInvoices, Convert.ToInt32(item.ClientID),
                                                   Convert.ToInt32(item.UserID), item.BillingDeliveryMethod, Convert.ToBoolean(item.IsBillingContact), item.LastLoginDate,
                                                   item.BillAsClientName, item.DueText, item.BillingContactAddress1, item.BillingContactAddress2, item.BillingContactCity,
                                                   item.BillingContactStateCode, item.BillingContactZIP, item.BillingContactEmail, item.BillingContactBusinessPhone, item.BillingContactFax,
                                                   item.BillingContactPOName, item.BillingContactPONumber, item.BillingContactNotes,
                                                   Convert.ToBoolean(item.ClientContactStatus), Convert.ToBoolean(item.BillingContactStatus), item.BillingContactID, item.LoginUserName);
            }
            else
            {
                clientContacts = new ClientContact();
            }

            return(clientContacts);
        }
Ejemplo n.º 3
0
        public static List <SelectListItem> GetBillingContactsForDropdown(int _UserID)
        {
            List <SelectListItem> billingContacts = new List <SelectListItem>();

            ClientContactsDataContext dc = new ClientContactsDataContext();
            var result = dc.S1_ClientContacts_GetAllBillingContactsFromUserID(_UserID);

            SelectListItem firstitem = new SelectListItem();

            firstitem.Value = "0";
            firstitem.Text  = "[All Accounts]";
            billingContacts.Add(firstitem);

            foreach (var item in result)
            {
                SelectListItem tempItem = new SelectListItem();
                tempItem.Value = item.BillingContactID.ToString();
                tempItem.Text  = item.ClientName + "; ";
                if (String.IsNullOrEmpty(item.BillingContactName))
                {
                    tempItem.Text += item.BillingContactAddress1;
                }
                else
                {
                    tempItem.Text += item.BillingContactName;
                }
                billingContacts.Add(tempItem);
            }

            return(billingContacts);
        }
Ejemplo n.º 4
0
        //Update Billing Contact
        public static int UpdateBillingContact(int billingcontactid, int clientid, int clientcontactid, int deliverymethod, string contactname, string addr1, string addr2,
                                               string city, string state, string zip, string businessphone, string fax, string email,
                                               bool isprimary, string poname, string ponumber, string notes, bool onlyshowinvoices, bool billingcontactstatus, int newprimarycontactid)
        {
            var dc     = new ClientContactsDataContext();
            var result = dc.S1_ClientContacts_UpdateBillingContact(billingcontactid, clientid, clientcontactid, deliverymethod, contactname, addr1, addr2,
                                                                   city, state, zip, businessphone, fax, email, isprimary, poname,
                                                                   ponumber, notes, onlyshowinvoices, billingcontactstatus, newprimarycontactid);

            return(result);
        }
Ejemplo n.º 5
0
        public static bool GetBillingContactHideFromClientFromUserID(int _UserID)
        {
            ClientContactsDataContext dc = new ClientContactsDataContext();
            var result = dc.S1_ClientContacts_GetBillingContactHideFromClientFromUserID(_UserID).SingleOrDefault().HideFromClient;

            if (result.HasValue)
            {
                return(result.Value);
            }
            else
            {
                return(false);
            }
        }
Ejemplo n.º 6
0
        //Update Client Contact
        public static int UpdateClientContact(int clientcontactid, int userid, int clientid, string firstname, string lastname, string title, string addr1, string addr2,
                                              string city, string state, string zip, string businessphone, string cellphone, string fax, string email, bool clientcontactstatus)
        {
            var dc     = new ClientContactsDataContext();
            var result = dc.S1_ClientContacts_UpdateClientContact(clientcontactid, userid, clientid, firstname, lastname, title, addr1, addr2,
                                                                  city, state, zip, businessphone, fax, email, clientcontactstatus);

            if (result != 0)
            {
                return(result - 1);
            }
            else
            {
                return(0);
            }
        }
Ejemplo n.º 7
0
        //Create Client Contact
        public static int CreateClientContact(int userid, int clientid, string firstname, string lastname, string title, string addr1, string addr2,
                                              string city, string state, string zip, string businessphone, string cellphone, string fax, string email)
        {
            var dc     = new ClientContactsDataContext();
            var result = dc.S1_ClientContacts_CreateClientContact(userid, clientid, firstname, lastname, title, addr1, addr2,
                                                                  city, state, zip, businessphone, fax, email).SingleOrDefault();

            if (result.ClientContactID != 0)
            {
                return(result.ClientContactID.Value);
            }
            else
            {
                return(0);
            }
        }
Ejemplo n.º 8
0
        //Create Billing Contact
        public static int CreateBillingContact(int clientid, int clientcontactid, int deliverymethod, string contactname, string addr1, string addr2,
                                               string city, string state, string zip, string businessphone, string fax, string email,
                                               bool isprimary, string poname, string ponumber, string notes, bool onlyshowinvoices)
        {
            var dc     = new ClientContactsDataContext();
            var result = dc.S1_ClientContacts_CreateBillingContact(clientid, clientcontactid, deliverymethod, contactname, addr1, addr2,
                                                                   city, state, zip, businessphone, fax, email, isprimary, poname,
                                                                   ponumber, notes, onlyshowinvoices).SingleOrDefault();

            if (result.BillingContactID != 0)
            {
                return(result.BillingContactID.Value);
            }
            else
            {
                return(0);
            }
        }
Ejemplo n.º 9
0
        //return true if the user has at least one primary contact
        public static bool UserHasPrimaryContact(int _UserID)
        {
            ClientContactsDataContext dc = new ClientContactsDataContext();
            var result = dc.S1_ClientContacts_GetClientContactFromUserID(_UserID);

            if (result != null)
            {
                foreach (var item in result)
                {
                    if (item.IsPrimaryBillingContact1)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Ejemplo n.º 10
0
        public BillingStatement(int _BillingContactID, DateTime _StartDate, DateTime _EndDate)
        {
            billingStatementRows = new List <BillingStatementRow>();

            BillingStatementDataContext dc = new BillingStatementDataContext();
            var result = dc.S1_BillingStatement_GetCurrentStatement(_BillingContactID, _StartDate, _EndDate);

            foreach (var item in result)
            {
                BillingStatementRow billingStatementRow = new BillingStatementRow(item.Date, item.InvoiceNumber,
                                                                                  item.Type, item.Amount.Value, item.LinkID);

                billingStatementRows.Add(billingStatementRow);
            }

            ClientContactsDataContext ccdc = new ClientContactsDataContext();

            billingContact = ClientContacts.GetClientContactFromBillingContactID(_BillingContactID);
        }
Ejemplo n.º 11
0
        //Get a list of billing contacts for the specified client.  The list is formatted for use in a dropdown.
        public static List <SelectListItem> GetBillingContactsFromClientForDropdown(int _ClientID)
        {
            List <SelectListItem> billingcontactlist = new List <SelectListItem>();

            var db     = new ClientContactsDataContext();
            var result = db.S1_ClientContacts_GetBillingContactsFromClientID(_ClientID);

            foreach (var item in result)
            {
                if (item.BillingContactID != 0)
                {
                    SelectListItem listitem = new SelectListItem();
                    listitem.Value = item.BillingContactID.ToString();
                    listitem.Text  = item.ClientContactName;
                    billingcontactlist.Add(listitem);
                }
            }

            return(billingcontactlist);
        }
Ejemplo n.º 12
0
        public static List <ClientContact> GetClientContactsFromClientID(int _ClientID)
        {
            List <ClientContact>      clientContacts = new List <ClientContact>();
            ClientContactsDataContext dc             = new ClientContactsDataContext();
            var result = dc.S1_ClientContacts_GetClientContactsFromClientID(_ClientID);

            foreach (var item in result)
            {
                ClientContact tempClientContact = new ClientContact(item.ClientContactID, item.ClientContactName, item.ClientContactFirstName, item.ClientContactLastName,
                                                                    item.ClientContactTitle, item.ClientContactAddress1, item.ClientContactAddress2, item.ClientContactCity, item.ClientContactStateCode,
                                                                    item.ClientContactZIP, item.ClientContactBusinessPhone, item.ClientContactCellPhone, item.ClientContactFax, item.ClientContactEmail,
                                                                    item.BillingContactName, item.IsPrimaryBillingContact, item.OnlyShowInvoices, _ClientID, Convert.ToInt32(item.UserID),
                                                                    item.BillingDeliveryMethod, Convert.ToBoolean(item.IsBillingContact), item.LastLoginDate, item.BillAsClientName, item.DueText,
                                                                    item.BillingContactAddress1, item.BillingContactAddress2, item.BillingContactCity, item.BillingContactStateCode, item.BillingContactZIP,
                                                                    item.BillingContactEmail, item.BillingContactBusinessPhone, item.BillingContactFax, item.BillingContactPOName, item.BillingContactPONumber,
                                                                    item.BillingContactNotes, Convert.ToBoolean(item.ClientContactStatus), Convert.ToBoolean(item.BillingContactStatus), item.BillingContactID, item.LoginUserName);
                clientContacts.Add(tempClientContact);
            }

            return(clientContacts);
        }
Ejemplo n.º 13
0
        public ActionResult CreateUsers(string myname)
        {
            var dbc     = new ClientContactsDataContext();
            var resultc = dbc.S1_MassCreateUsers_GetClientContacts().ToList();

            bool   CreateEmail;
            string username;
            string useremail;
            int    newuserid = 0;

            foreach (var item in resultc)
            {
                if (String.IsNullOrEmpty(item.ClientContactEmail))
                {
                    username    = System.Guid.NewGuid().ToString() + "@" + ConfigurationManager.AppSettings["companyname"] + ".com";
                    useremail   = username;
                    CreateEmail = false;
                }
                else
                {
                    Regex emailregex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,7}$");

                    Match m = emailregex.Match(item.ClientContactEmail);
                    if (m.Success == false)
                    {
                        ViewData.ModelState.AddModelError("ErrorMessages", "Invalid email format. ClientContactID - " + item.ClientContactID);
                        CreateEmail = false;
                    }

                    username  = item.ClientContactEmail;
                    useremail = item.ClientContactEmail;

                    if (item.ClientContactStatus == true)
                    {
                        CreateEmail = true;
                    }
                    else
                    {
                        CreateEmail = false;
                    }
                }

                CreateEmail = false;

                if (ViewData.ModelState.IsValid)
                {
                    string ReturnURL       = "/Security/ChangePassword";
                    string clientname      = null;
                    string clientaddr1     = null;
                    string clientaddr2     = null;
                    string clientcity      = null;
                    string clientstate     = null;
                    string clientzipcode   = null;
                    string contactpassword = item.ClientContactLastName.Substring(0, 3) + item.ClientContactZIP.Substring(0, 3) + item.ClientContactState;


                    //CHECK TO SEE IF THE USER ALREADY EXISTS
                    var dbu     = new UsersDataContext();
                    var resultu = dbu.S1_Users_GetUserByEmail(item.ClientContactEmail).SingleOrDefault();

                    if (resultu == null)
                    {
                        //CREATE THE USER ACCOUNT
                        // Attempt to register the user
                        MembershipCreateStatus createStatus;
                        MembershipUser         newUser;

                        if (Convert.ToBoolean(item.ClientContactStatus)) //create a user for an active clientcontact record
                        {
                            newUser = Provider.CreateUser(username, contactpassword, useremail,
                                                          "client", "client", true, null, out createStatus);
                        }
                        else //create the user, but set IsActive to false on ASPNet security
                        {
                            newUser = Provider.CreateUser(username, contactpassword, useremail,
                                                          "client", "client", false, null, out createStatus);
                        }

                        if (newUser != null)
                        {
                            var db     = new UsersDataContext();
                            var result = db.S1_Users_CreateUser(username, item.ClientID, 1, item.ClientContactFirstName, item.ClientContactLastName).SingleOrDefault();
                            if (result.UserID > 0)
                            {
                                newuserid = Convert.ToInt32(result.UserID);

                                Roles.AddUserToRole(username, "Client");
                                Roles.AddUserToRole(username, "Client_Billing");

                                Provider.ChangePasswordQuestionAndAnswer(username, contactpassword, "What is your Company's zipcode?", item.ClientContactZIP);


                                if (CreateEmail)
                                {
                                    var db3     = new ClientsDataContext();
                                    var result3 = db3.S1_Clients_GetClientsFromUser(result.UserID).SingleOrDefault();

                                    if (result3 == null)
                                    {
                                        clientname    = "";
                                        clientaddr1   = "";
                                        clientaddr2   = "";
                                        clientcity    = "";
                                        clientstate   = "";
                                        clientzipcode = "";
                                    }
                                    else
                                    {
                                        clientname    = result3.ClientName;
                                        clientaddr1   = result3.Address1;
                                        clientaddr2   = result3.Address2;
                                        clientcity    = result3.City;
                                        clientstate   = result3.State;
                                        clientzipcode = result3.ZipCode;
                                    }

                                    string subject = ConfigurationManager.AppSettings["CompanyName"] + " Billing: New Account for " + item.ClientContactFirstName + " " + item.ClientContactLastName + " - " + clientname;


                                    var db1 = new UsersDataContext();
                                    //The following line is creating a message with a null status on purpose. Due to the actionGUID being used in the emails following. Note also this is S1_Users instead of S1_Messages
                                    var results1 = db.S1_Users_CreateMessageWithAction(1, subject, result.UserID, 1, 0, 3, HttpUtility.UrlDecode(ReturnURL), System.DateTime.Now, null).SingleOrDefault();

                                    if (results1.ActionGUID != null)
                                    {
                                        Dictionary <string, string> messagevalues = new Dictionary <string, string>();
                                        messagevalues.Add("[[USER_FIRSTNAME]]", "");
                                        messagevalues.Add("[[USER_MI]]", "");
                                        messagevalues.Add("[[USER_LASTNAME]]", "");
                                        messagevalues.Add("[[USER_TITLE]]", "");
                                        messagevalues.Add("[[COMPANY_ADDRESS_LINE1]]", clientaddr1);
                                        messagevalues.Add("[[COMPANY_ADDRESS_LINE2]]", clientaddr2);
                                        messagevalues.Add("[[COMPANY_ADDRESS_CITY]]", clientcity);
                                        messagevalues.Add("[[COMPANY_ADDRESS_STATE]]", clientstate);
                                        messagevalues.Add("[[COMPANY_ADDRESS_ZIPCODE]]", clientzipcode);
                                        messagevalues.Add("[[USER_EMAIL]]", item.ClientContactEmail);
                                        messagevalues.Add("[[USER_PHONE]]", "");
                                        messagevalues.Add("[[USERNAME]]", username);
                                        messagevalues.Add("[[COMPANYNAME]]", clientname);
                                        messagevalues.Add("[[PASSWORD]]", contactpassword);
                                        messagevalues.Add("[[GUIDURL]]", System.Configuration.ConfigurationManager.AppSettings["DefaultPath"] + "/Account/ConfirmEmail/" + results1.ActionGUID.ToString() + "?portal=client");

                                        var messageRecord = Messages.GetMessageTemplateRecord(0, "Create Client Account", messagevalues);

                                        string messagebody = messageRecord != null ? messageRecord.MessageText : null;

                                        if (messagebody != null)
                                        {
                                            int  messageActionType       = messageRecord.MessageActionTypeID.GetValueOrDefault();
                                            int? MessageIDOutput         = new int?();
                                            Guid?MessageActionGuidOutput = new Guid?();

                                            //Send email with UserName
                                            Messages.CreateMessageWithAction(messageActionType, subject, messagebody, result.UserID, 1, 0, 3, HttpUtility.UrlDecode(ReturnURL), System.DateTime.Now, null, "HTML", ref MessageIDOutput, ref MessageActionGuidOutput);
                                            Messages.UpdateMessageAndMarkForSending(MessageIDOutput.Value, subject, messagebody);

                                            subject = ConfigurationManager.AppSettings["CompanyName"] + " Billing: " + item.ClientContactFirstName + " " + item.ClientContactLastName + " - " + clientname;

                                            messageRecord = Messages.GetMessageTemplateRecord(0, "Create Client Password", messagevalues);

                                            messagebody = messageRecord != null ? messageRecord.MessageText : null;

                                            if (messagebody != null)
                                            {
                                                messageActionType       = messageRecord.MessageActionTypeID.GetValueOrDefault();
                                                MessageIDOutput         = new int?();
                                                MessageActionGuidOutput = new Guid?();

                                                //Send email with Password
                                                Messages.CreateMessageWithAction(messageActionType, subject, messagebody, result.UserID, 1, 0, 3, HttpUtility.UrlDecode(ReturnURL), System.DateTime.Now, null, "HTML", ref MessageIDOutput, ref MessageActionGuidOutput);
                                                Messages.UpdateMessageAndMarkForSending(MessageIDOutput.Value, subject, messagebody);
                                            }
                                            //return View(viewClientContacts_Details);
                                        }
                                        else
                                        {
                                            ModelState.AddModelError("ErrorMessages", "There was a problem sending the confirmation email.  Please re-create the account. ");
                                            return(View());
                                        }
                                    }
                                    else
                                    {
                                        ModelState.AddModelError("ErrorMessages", "There was a problem sending the confirmation email.  Please re-create the account.");
                                        return(View());
                                    }
                                }
                            }
                            else
                            {
                                ModelState.AddModelError("ErrorMessages", ErrorHandler.ErrorCodeToString(createStatus));
                                return(View());
                            }
                        }
                        else
                        {
                            ViewData.ModelState.AddModelError("ErrorMessages", ErrorHandler.ErrorCodeToString(createStatus));
                            return(View());
                        }
                    } //END IF USER ALREADY EXISTS
                    else
                    {
                        newuserid = Convert.ToInt32(resultu.UserID);
                    }

                    //NOW UPDATE THE CLIENT CONTACT
                    var db6     = new ClientContactsDataContext();
                    var result6 = db6.S1_MassCreateUsers_UpdateClientContacts(item.ClientContactID, newuserid);

                    if (result6 != 0)
                    {
                        ModelState.AddModelError("ErrorMessages", "Error attaching the UserID to the ClientContact");
                        return(View());
                    }
                }
            }
            ModelState.AddModelError("ErrorMessages", "UPDATE IS COMPLETE!!!");
            return(View());
        }
Ejemplo n.º 14
0
        public ActionResult CreateEmails(string myname)
        {
            var dbc     = new ClientContactsDataContext();
            var resultc = dbc.S1_MassCreateUsers_GetClientContactsEmail().ToList();

            string username;
            string useremail;

            foreach (var item in resultc)
            {
                Regex emailregex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,7}$");

                Match m = emailregex.Match(item.Email);
                if (m.Success == false)
                {
                    ViewData.ModelState.AddModelError("ErrorMessages", "Invalid email format. ClientContactID - " + item.Email);
                }

                username  = item.UserName;
                useremail = item.Email;


                if (ViewData.ModelState.IsValid)
                {
                    string ReturnURL       = "/Security/ChangePassword";
                    string contactpassword = item.ContactLastName.Substring(0, 3) + item.ContactZipCode.Substring(0, 3) + item.ContactState;

                    MembershipUser mu = Provider.GetUser(item.UserName, false);
                    Provider.ChangePasswordQuestionAndAnswer(item.UserName, contactpassword, "What is your Company's zipcode?", item.ContactZipCode);
                    Provider.UpdateUser(mu);


                    string oldpassword = mu.ResetPassword();
                    Provider.ChangePassword(item.UserName, oldpassword, contactpassword);
                    Provider.UpdateUser(mu);

                    string subject = ConfigurationManager.AppSettings["CompanyName"] + " Billing: New Account for " + item.ContactFirstName + " " + item.ContactLastName + " - " + item.ClientName;


                    var db1 = new UsersDataContext();
                    //The following line is creating a message with a null status on purpose. Due to the actionGUID being used in the emails following. Note also this is S1_Users instead of S1_Messages
                    var results1 = db1.S1_Users_CreateMessageWithAction(1, subject, item.UserID, 1, 0, 3, HttpUtility.UrlDecode(ReturnURL), System.DateTime.Now, null).SingleOrDefault();

                    if (results1.ActionGUID != null)
                    {
                        Dictionary <string, string> messagevalues = new Dictionary <string, string>();
                        messagevalues.Add("[[USER_EMAIL]]", item.Email);
                        messagevalues.Add("[[USERNAME]]", item.UserName);
                        messagevalues.Add("[[COMPANYNAME]]", item.ClientName);
                        messagevalues.Add("[[PASSWORD]]", contactpassword);
                        messagevalues.Add("[[GUIDURL]]", System.Configuration.ConfigurationManager.AppSettings["DefaultPath"] + "/Account/ConfirmEmail/" + results1.ActionGUID.ToString() + "?portal=client");

                        var messageRecord = Messages.GetMessageTemplateRecord(0, "Create Client Account", messagevalues);

                        string messagebody = messageRecord != null ? messageRecord.MessageText : null;

                        if (messagebody != null)
                        {
                            int  messageActionType       = messageRecord.MessageActionTypeID.GetValueOrDefault();
                            int? MessageIDOutput         = new int?();
                            Guid?MessageActionGuidOutput = new Guid?();

                            //Send email with UserName
                            Messages.CreateMessageWithAction(messageActionType, subject, messagebody, item.UserID, 1, 0, 3, HttpUtility.UrlDecode(ReturnURL), System.DateTime.Now, null, "HTML", ref MessageIDOutput, ref MessageActionGuidOutput);
                            Messages.UpdateMessageAndMarkForSending(MessageIDOutput.Value, subject, messagebody);

                            subject = ConfigurationManager.AppSettings["CompanyName"] + " Billing: " + item.ContactFirstName + " " + item.ContactLastName + " - " + item.ClientName;

                            db1.S1_Users_CreateMessageWithAction(2, subject, item.UserID, 1, 0, 3, "", System.DateTime.Now, null);

                            messageRecord = Messages.GetMessageTemplateRecord(0, "Create Client Password", messagevalues);

                            messagebody = messageRecord != null ? messageRecord.MessageText : null;

                            if (messagebody != null)
                            {
                                messageActionType       = messageRecord.MessageActionTypeID.GetValueOrDefault();
                                MessageIDOutput         = new int?();
                                MessageActionGuidOutput = new Guid?();

                                //Send email with Password
                                Messages.CreateMessageWithAction(messageActionType, subject, messagebody, item.UserID, 1, 0, 3, HttpUtility.UrlDecode(ReturnURL), System.DateTime.Now, null, "HTML", ref MessageIDOutput, ref MessageActionGuidOutput);
                                Messages.UpdateMessageAndMarkForSending(MessageIDOutput.Value, subject, messagebody);
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("ErrorMessages", "There was a problem sending the confirmation email for UserID - " + item.UserID);
                            return(View());
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("ErrorMessages", "There was a problem sending the confirmation email for UserID - " + item.UserID);
                        return(View());
                    }
                }
            }

            ModelState.AddModelError("ErrorMessages", "EMAILS SENT!!!");
            return(View());
        }
Ejemplo n.º 15
0
        //Fix Issues Billing Contact
        public static void FixIssuesBillingContact(int clientid)
        {
            var dc = new ClientContactsDataContext();

            dc.S1_ClientContacts_FixIssuesBillingContact(clientid);
        }