public void AddCustomer(int organizationID, int productID)
        {
            using (SqlCommand command = new SqlCommand())
            {
                command.CommandText = @"INSERT INTO 
          OrganizationProducts 
          (OrganizationID, ProductID, IsVisibleOnPortal, DateCreated, DateModified, CreatorID, ModifierID) 
          VALUES 
          (@OrganizationID, @ProductID, 1, @DateCreated, @DateModified, @CreatorID, @ModifierID)";
                command.CommandType = CommandType.Text;
                command.Parameters.AddWithValue("@OrganizationID", organizationID);
                command.Parameters.AddWithValue("@ProductID", productID);
                command.Parameters.AddWithValue("@DateCreated", DateTime.UtcNow);
                command.Parameters.AddWithValue("@DateModified", DateTime.UtcNow);
                command.Parameters.AddWithValue("@CreatorID", LoginUser.UserID);
                command.Parameters.AddWithValue("@ModifierID", LoginUser.UserID);
                ExecuteNonQuery(command, "OrganizationProducts");
            }

            string organizationName = ((Organization)Organizations.GetOrganization(LoginUser, organizationID)).Name;
            string productName      = ((Product)Products.GetProduct(LoginUser, productID)).Name;

            string description = "Added product '" + productName + "' to customer '" + organizationName + "'";

            ActionLogs.AddActionLog(LoginUser, ActionLogType.Insert, ReferenceType.Products, productID, description);
            ActionLogs.AddActionLog(LoginUser, ActionLogType.Insert, ReferenceType.Organizations, organizationID, description);
        }
Exemple #2
0
        public static TimeSpan CalculatePausedTime(LoginUser loginUser, int organizationId, int triggerId, DateTime pausedOn, DateTime resumedOn, Logs logs = null)
        {
            SlaTrigger   slaTrigger   = SlaTriggers.GetSlaTrigger(loginUser, triggerId);
            Organization organization = Organizations.GetOrganization(loginUser, organizationId);

            SlaTickets.BusinessHours businessHours = new SlaTickets.BusinessHours()
            {
                DayStartUtc  = organization.BusinessDayStartUtc,
                DayEndUtc    = organization.BusinessDayEndUtc,
                BusinessDays = organization.BusinessDays
            };

            //Check if we should use SLA's business hours instead of Account's
            if (!slaTrigger.UseBusinessHours &&
                slaTrigger.DayStartUtc.HasValue &&
                slaTrigger.DayEndUtc.HasValue)
            {
                businessHours.DayStartUtc  = slaTrigger.DayStartUtc.Value;
                businessHours.DayEndUtc    = slaTrigger.DayEndUtc.Value;
                businessHours.BusinessDays = slaTrigger.Weekdays;
            }

            List <DateTime> daysToPause    = SlaTriggers.GetSpecificDaysToPause(slaTrigger.SlaTriggerID);
            bool            pauseOnHoliday = slaTrigger.PauseOnHoliday;
            CalendarEvents  holidays       = new CalendarEvents(loginUser);

            if (pauseOnHoliday)
            {
                holidays.LoadHolidays(organization.OrganizationID);
            }

            return(CalculatePausedTime(loginUser, organization, slaTrigger, pausedOn, resumedOn, businessHours, daysToPause, holidays, logs));
        }
        public string GetCustomFieldsSelect(ReferenceType refType, int?auxID, string refIDFieldName)
        {
            CustomFields = new CustomFields(LoginUser);
            int          orgID        = LoginUser.OrganizationID;
            Organization organization = Organizations.GetOrganization(LoginUser, LoginUser.OrganizationID);

            if (organization != null && organization.ParentID != 1)
            {
                orgID = (int)organization.ParentID;
            }
            _customFields.LoadByReferenceType(orgID, refType, auxID);
            return(GetCustomFieldsSelect(CustomFields, refIDFieldName));
        }
        public static string GetProductFamiliesRightsClause(LoginUser loginUser)
        {
            StringBuilder result = new StringBuilder();

            User user = Users.GetUser(loginUser, loginUser.UserID);

            if ((ProductFamiliesRightType)user.ProductFamiliesRights != ProductFamiliesRightType.AllFamilies)
            {
                Organization organization = Organizations.GetOrganization(loginUser, loginUser.OrganizationID);
                if (organization.UseProductFamilies)
                {
                    result.Append(" AND p.ProductFamilyID IN (SELECT ProductFamilyID FROM UserRightsProductFamilies WHERE UserID = @userID)");
                }
            }
            return(result.ToString());
        }
        public void RemoveCustomer(int organizationID, int productID)
        {
            using (SqlCommand command = new SqlCommand())
            {
                command.CommandText = "DELETE FROM OrganizationProducts WHERE (ProductID = @ProductID) AND (OrganizationID = @OrganizationID)";
                command.CommandType = CommandType.Text;
                command.Parameters.AddWithValue("@OrganizationID", organizationID);
                command.Parameters.AddWithValue("@ProductID", productID);
                ExecuteNonQuery(command, "OrganizationProducts");
            }
            Organization org         = (Organization)Organizations.GetOrganization(LoginUser, organizationID);
            Product      product     = (Product)Products.GetProduct(LoginUser, productID);
            string       description = "Removed '" + product.Name + "' from the customer " + org.Name;

            ActionLogs.AddActionLog(LoginUser, ActionLogType.Delete, ReferenceType.Products, productID, description);
            ActionLogs.AddActionLog(LoginUser, ActionLogType.Delete, ReferenceType.Organizations, organizationID, description);
        }
 public ContactsViewItem FindByEmail(string email, string organizationSalesForceID)
 {
     foreach (ContactsViewItem contactsViewItem in this)
     {
         string contactsViewItemOrganizationSalesForceID = Organizations.GetOrganization(this.LoginUser, contactsViewItem.OrganizationID).CRMLinkID;
         if (contactsViewItemOrganizationSalesForceID != null)
         {
             if (contactsViewItem.Email.Trim().ToLower() == email.Trim().ToLower())
             {
                 if (contactsViewItemOrganizationSalesForceID == organizationSalesForceID)
                 {
                     return(contactsViewItem);
                 }
             }
         }
     }
     return(null);
 }
Exemple #7
0
        public WatercoolerAttachmentProxy GetProxy()
        {
            WatercoolerAttachmentProxy result = new WatercoolerAttachmentProxy();

            result.CreatorID    = this.CreatorID;
            result.RefType      = this.RefType;
            result.AttachmentID = this.AttachmentID;
            result.MessageID    = this.MessageID;

            result.DateCreated = DateTime.SpecifyKind(this.DateCreatedUtc, DateTimeKind.Utc);

            result.CreatorName = Users.GetUserFullName(BaseCollection.LoginUser, this.CreatorID);

            if (this.RefType == WaterCoolerAttachmentType.Group)
            {
                var group = Groups.GetGroup(BaseCollection.LoginUser, this.AttachmentID);
                if (group != null)
                {
                    result.GroupName = group.Name;
                }
                else
                {
                    return(null);
                }
            }

            if (this.RefType == WaterCoolerAttachmentType.Ticket)
            {
                var ticket = Tickets.GetTicketByNumber(BaseCollection.LoginUser, this.AttachmentID);
                if (ticket != null)
                {
                    result.TicketName = ticket.Name;
                }
                else
                {
                    return(null);
                }
            }

            if (this.RefType == WaterCoolerAttachmentType.Product)
            {
                var product = Products.GetProduct(BaseCollection.LoginUser, this.AttachmentID);
                if (product != null)
                {
                    result.ProductName = product.Name;
                }
                else
                {
                    return(null);
                }
            }

            if (this.RefType == WaterCoolerAttachmentType.Company)
            {
                var organization = Organizations.GetOrganization(BaseCollection.LoginUser, this.AttachmentID);
                if (organization != null)
                {
                    result.CompanyName = organization.Name;
                }
                else
                {
                    return(null);
                }
            }

            if (this.RefType == WaterCoolerAttachmentType.User)
            {
                var user = Users.GetUserFullName(BaseCollection.LoginUser, this.AttachmentID);
                if (user != null)
                {
                    result.UserName = user;
                }
                else
                {
                    return(null);
                }
            }

            if (this.RefType == WaterCoolerAttachmentType.Activities)
            {
                var activity = Notes.GetNote(BaseCollection.LoginUser, this.AttachmentID);
                if (activity != null)
                {
                    result.ActivityRefType = activity.RefType;
                    result.ActivityTitle   = activity.Title;
                    result.ActivityRefID   = activity.RefID;
                }
                else
                {
                    return(null);
                }
            }

            return(result);
        }
Exemple #8
0
        public static ChatRequest RequestChat(LoginUser loginUser, int organizationID, string firstName, string lastName, string email, string message, string ipAddress, int groupID = 0)
        {
            ChatClients clients = new ChatClients(loginUser);
            ChatClient  client  = clients.IsEmpty ? (new ChatClients(loginUser)).AddNewChatClient() : clients[0];

            client.OrganizationID = organizationID;
            client.FirstName      = firstName;
            client.LastName       = lastName;
            client.Email          = email;
            Users users = new Users(loginUser);

            if (!string.IsNullOrEmpty(email))
            {
                users.LoadByEmail(organizationID, email);

                try
                {
                    if (!users.IsEmpty)
                    {
                        client.LinkedUserID = users[0].UserID;
                        client.CompanyName  = Organizations.GetOrganization(loginUser, users[0].OrganizationID).Name;
                    }
                    else
                    {
                        string       emailDomain = email.Substring(email.LastIndexOf('@') + 1).Trim();
                        Organization org         = Organization.GetCompanyByDomain(organizationID, emailDomain, loginUser);
                        client.CompanyName = (org != null) ? org.Name : "";
                    }
                }
                catch (Exception)
                {
                    client.CompanyName = "";
                }
            }
            else
            {
                Organization org = Organization.GetCompanyByDomain(organizationID, string.Empty, loginUser, forceUnknown: true);
                client.CompanyName = (org != null) ? org.Name : "";
            }

            client.Collection.Save();


            Chat chat = (new Chats(loginUser)).AddNewChat();

            chat.InitiatorID    = client.ChatClientID;
            chat.InitiatorType  = ChatParticipantType.External;
            chat.OrganizationID = organizationID;
            chat.Collection.Save();

            Chats.JoinChat(loginUser, client.ChatClientID, ChatParticipantType.External, chat.ChatID, ipAddress);

            ChatRequest request = (new ChatRequests(loginUser)).AddNewChatRequest();

            request.RequestorID    = client.ChatClientID;
            request.RequestorType  = ChatParticipantType.External;
            request.OrganizationID = organizationID;
            request.ChatID         = chat.ChatID;
            request.Message        = message;
            request.IsAccepted     = false;
            request.RequestType    = ChatRequestType.External;
            request.GroupID        = groupID;
            request.Collection.Save();

            return(request);
        }
Exemple #9
0
        public static Organization Clone(LoginUser loginUser, int sourceOrganizationID, string cloneName)
        {
            Organization sOrg = Organizations.GetOrganization(loginUser, sourceOrganizationID);
            Organization dOrg = (new Organizations(loginUser)).AddNewOrganization();

            dOrg.CopyRowData(sOrg);
            dOrg.Name = cloneName;
            dOrg.Collection.Save();

            //** Groups **//
            Groups sGroups = new Groups(loginUser);

            sGroups.LoadByOrganizationID(sourceOrganizationID);

            Groups dGroups = new Groups(loginUser);

            foreach (Group sGroup in sGroups)
            {
                Group dGroup = dGroups.AddNewGroup();
                dGroup.CopyRowData(sGroup);
                dGroup.OrganizationID = dOrg.OrganizationID;
            }
            dGroups.Save();

            //** Users **//

            Users sUsers = new Users(loginUser);

            sUsers.LoadByOrganizationID(sourceOrganizationID, false);

            Users dUsers = new Users(loginUser);

            foreach (User sUser in sUsers)
            {
                User dUser = dUsers.AddNewUser();
                dUser.CopyRowData(sUser);
                dUser.OrganizationID = dOrg.OrganizationID;
                if (sUser.PrimaryGroupID != null)
                {
                    dUser.PrimaryGroupID = dGroups.FindByName(sGroups.FindByGroupID((int)sUser.PrimaryGroupID).Name).GroupID;
                }
            }
            dUsers.Save();


            //** Finish Organization w/ users and groups **//

            dOrg.DefaultPortalGroupID  = sOrg.DefaultPortalGroupID == null ? null : (int?)dGroups.FindByName(sGroups.FindByGroupID((int)sOrg.DefaultPortalGroupID).Name).GroupID;
            dOrg.PrimaryUserID         = sOrg.PrimaryUserID == null ? null : (int?)dUsers.FindByEmail(sUsers.FindByUserID((int)sOrg.PrimaryUserID).Email).UserID;
            dOrg.DefaultSupportUserID  = null;
            dOrg.DefaultSupportGroupID = null;
            dOrg.WebServiceID          = Guid.NewGuid();
            dOrg.SystemEmailID         = Guid.NewGuid();
            dOrg.PortalGuid            = Guid.NewGuid();
            dOrg.Collection.Save();

            //** Ticket Types **//

            TicketTypes sTicketTypes = new TicketTypes(loginUser);

            sTicketTypes.LoadByOrganizationID(sourceOrganizationID);

            TicketTypes dTicketTypes = new TicketTypes(loginUser);

            foreach (TicketType sTicketType in sTicketTypes)
            {
                TicketType dTicketType = dTicketTypes.AddNewTicketType();
                dTicketType.CopyRowData(sTicketType);
                dTicketType.OrganizationID = dOrg.OrganizationID;
            }
            dTicketTypes.Save();

            //** Ticket Severities **//

            TicketSeverities sSeverities = new TicketSeverities(loginUser);

            sSeverities.LoadByOrganizationID(sourceOrganizationID);

            TicketSeverities dSeverities = new TicketSeverities(loginUser);

            foreach (TicketSeverity sSeverity in sSeverities)
            {
                TicketSeverity dSeverity = dSeverities.AddNewTicketSeverity();
                dSeverity.CopyRowData(sSeverity);

                dSeverity.OrganizationID = dOrg.OrganizationID;
            }
            dSeverities.Save();

            //** Ticket Statuses **//

            TicketStatuses sStatuses = new TicketStatuses(loginUser);

            sStatuses.LoadByOrganizationID(sourceOrganizationID);

            TicketStatuses dStatuses = new TicketStatuses(loginUser);

            foreach (TicketStatus sStatus in sStatuses)
            {
                TicketType tempTT = sTicketTypes.FindByTicketTypeID(sStatus.TicketTypeID);
                if (tempTT == null)
                {
                    continue;
                }
                TicketStatus dStatus = dStatuses.AddNewTicketStatus();
                dStatus.CopyRowData(sStatus);
                dStatus.OrganizationID = dOrg.OrganizationID;
                dStatus.TicketTypeID   = dTicketTypes.FindByName(tempTT.Name).TicketTypeID;
            }
            dStatuses.Save();

            TicketNextStatuses sTicketNextStatuses = new TicketNextStatuses(loginUser);
            TicketNextStatuses dTicketNextStatuses = new TicketNextStatuses(loginUser);

            sTicketNextStatuses.LoadAll(sourceOrganizationID);

            foreach (TicketNextStatus sTicketNextStatus in sTicketNextStatuses)
            {
                TicketNextStatus dTicketNextStatus = dTicketNextStatuses.AddNewTicketNextStatus();
                dTicketNextStatus.CopyRowData(sTicketNextStatus);
                TicketStatus tempTS = sStatuses.FindByTicketStatusID(sTicketNextStatus.CurrentStatusID);
                TicketType   tempTT = dTicketTypes.FindByName(sTicketTypes.FindByTicketTypeID(tempTS.TicketTypeID).Name);
                dTicketNextStatus.CurrentStatusID = dStatuses.FindByName(tempTS.Name, tempTT.TicketTypeID).TicketStatusID;
                tempTS = sStatuses.FindByTicketStatusID(sTicketNextStatus.CurrentStatusID);
                tempTT = dTicketTypes.FindByName(sTicketTypes.FindByTicketTypeID(tempTS.TicketTypeID).Name);
                dTicketNextStatus.NextStatusID = dStatuses.FindByName(tempTS.Name, tempTT.TicketTypeID).TicketStatusID;



                //WORKING HERE
            }

            TicketTemplates sTicketTemplates = new TicketTemplates(loginUser);
            TicketTemplates dTicketTemplates = new TicketTemplates(loginUser);

            sTicketTemplates.LoadByOrganization(sourceOrganizationID);

            foreach (TicketTemplate sTicketTemplate in sTicketTemplates)
            {
                TicketTemplate dTicketTemplate = dTicketTemplates.AddNewTicketTemplate();
                dTicketTemplate.CopyRowData(sTicketTemplate);
                dTicketTemplate.OrganizationID = dOrg.OrganizationID;
                dTicketTemplate.TicketTypeID   = dTicketTemplate.TicketTypeID != null ? (int?)dTicketTypes.FindByName(sTicketTypes.FindByTicketTypeID((int)sTicketTemplate.TicketTypeID).Name).TicketTypeID : null;
            }

            //** ActionTypes **//

            ActionTypes sActionTypes = new ActionTypes(loginUser);

            sActionTypes.LoadByOrganizationID(sourceOrganizationID);
            ActionTypes dActionTypes = new ActionTypes(loginUser);

            foreach (ActionType sActionType in sActionTypes)
            {
                ActionType dActionType = dActionTypes.AddNewActionType();
                dActionType.CopyRowData(sActionType);
                dActionType.OrganizationID = dOrg.OrganizationID;
            }
            dActionTypes.Save();


            //** Products **//

            Products sProducts = new Products(loginUser);
            Products dProducts = new Products(loginUser);

            sProducts.LoadByOrganizationID(sourceOrganizationID);

            foreach (Product sProduct in sProducts)
            {
                Product dProduct = dProducts.AddNewProduct();
                dProduct.CopyRowData(sProduct);
                dProduct.OrganizationID = dOrg.OrganizationID;
            }
            dProducts.Save();

            ProductVersionStatuses sProductVersionStatuses = new ProductVersionStatuses(loginUser);
            ProductVersionStatuses dProductVersionStatuses = new ProductVersionStatuses(loginUser);

            sProductVersionStatuses.LoadByOrganizationID(sourceOrganizationID);

            foreach (ProductVersionStatus sProductVersionStatus in sProductVersionStatuses)
            {
                ProductVersionStatus dProductVersionStatus = dProductVersionStatuses.AddNewProductVersionStatus();
                dProductVersionStatus.CopyRowData(sProductVersionStatus);
                dProductVersionStatus.OrganizationID = dOrg.OrganizationID;
            }

            dProductVersionStatuses.Save();

            ProductVersions sProductVersions = new ProductVersions(loginUser);
            ProductVersions dProductVersions = new ProductVersions(loginUser);

            sProductVersions.LoadAll(sourceOrganizationID);

            foreach (ProductVersion sProductVersion in sProductVersions)
            {
                ProductVersion dProductVersion = dProductVersions.AddNewProductVersion();
                dProductVersion.CopyRowData(sProductVersion);
                dProductVersion.ProductID = dProducts.FindByName(sProducts.FindByProductID(sProductVersion.ProductID).Name).ProductID;
            }
            dProductVersions.Save();

            PortalOptions sPortalOptions = new PortalOptions(loginUser);
            PortalOptions dPortalOptions = new PortalOptions(loginUser);

            sPortalOptions.LoadByOrganizationID(sourceOrganizationID);

            foreach (PortalOption sPortalOption in sPortalOptions)
            {
                PortalOption dPortalOption = dPortalOptions.AddNewPortalOption();
                dPortalOption.CopyRowData(sPortalOption);
                dPortalOption.OrganizationID = dOrg.OrganizationID;
                dPortalOption.RequestGroup   = sPortalOption.RequestGroup == null ? null : (int?)dGroups.FindByName(sGroups.FindByGroupID((int)sPortalOption.RequestGroup).Name).GroupID;
                dPortalOption.RequestType    = sPortalOption.RequestType == null ? null : (int?)dTicketTypes.FindByName(sTicketTypes.FindByTicketTypeID((int)sPortalOption.RequestType).Name).TicketTypeID;;
            }
            dPortalOptions.Save();


            return(dOrg);

            /*
             * Actions
             * Addresses
             * Assets
             * ChatSettings
             * ChatUserSettings
             * CrmLinkTable
             * CrmLinkFields
             * CustomFieldCategories
             * CustomFields
             * CustomValues
             * FacebookOptions
             * ForumCategories
             * ForumPermissions
             * ForumTickets
             * GroupUsers
             * Notes
             * OrganizationEmails
             * OrganizationProducts
             * Organizations
             * OrganizationSettings
             * OrganizationTickets
             * PhoneNumbers
             * PhoneQueue
             * PhoneTypes
             * PortalOptions
             * Reminders
             * Reports
             * SlaLevels
             * SlaTriggers
             * Subscriptions
             * Tags
             * TagLinks
             * Automation Stuff
             * TicketQueue
             * TicketRatings
             * TicketRelationShips
             * Users(Contacts)
             * WaterCooler
             * WikiArticles
             */
        }
 public Organization GetOrganization()
 {
     return(Organizations.GetOrganization(this, this.OrganizationID));
 }