コード例 #1
0
        public void Execute(IServiceProvider serviceProvider)
        {
            SqlDataAccess sda = null;

            try
            {
                sda = new SqlDataAccess();
                sda.openConnection(Globals.ConnectionString);

                #region | SERVICE |
                IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

                #region | Validate Request |
                //Target yoksa veya Entity tipinde değilse, devam etme.
                if (!context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity))
                {
                    return;
                }
                #endregion

                IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

                #endregion

                Entity entity = (Entity)context.InputParameters["Target"];

                #region |DEFINE IMAGE IF EXISTS|
                Entity preImage = null;
                if (context.PreEntityImages.Contains("PreImage") && context.PreEntityImages["PreImage"] is Entity)
                {
                    preImage = (Entity)context.PreEntityImages["PreImage"];
                }

                #endregion

                #region | VARIABLES |
                string customerFirstName   = null;
                string customerLastName    = null;
                string customerMobilePhone = null;
                string customerFullName    = null;
                string assemblerFullName   = null;

                int statusCode    = 0;
                int oldStatusCode = 0;

                AssemblerInfo     assemblerInfo = null;
                List <ScoreLimit> lstLimits     = new List <ScoreLimit>();

                EntityReference portal = null;
                EntityReference user   = null;

                if (preImage.Contains("new_portalid") && preImage["new_portalid"] != null)
                {
                    portal = (EntityReference)preImage["new_portalid"];
                }

                if (preImage.Contains("new_userid") && preImage["new_userid"] != null)
                {
                    user = (EntityReference)preImage["new_userid"];

                    MsCrmResultObj <AssemblerInfo> resultAssembler = AssemblyRequestHelper.GetAssemblerInfo(user.Id, sda);

                    if (resultAssembler.Success)
                    {
                        assemblerInfo = resultAssembler.ReturnObject;
                    }
                    else
                    {
                        throw new Exception("Anahtarcı bilgisi alınamadı.Hata:" + resultAssembler.Result);
                    }
                }

                if (preImage.Contains("new_firstname") && preImage["new_firstname"] != null)
                {
                    customerFirstName = preImage["new_firstname"].ToString();
                }

                if (preImage.Contains("new_lastname") && preImage["new_lastname"] != null)
                {
                    customerLastName = preImage["new_lastname"].ToString();
                }

                if (preImage.Contains("new_mobilephone") && preImage["new_mobilephone"] != null)
                {
                    customerMobilePhone = preImage["new_mobilephone"].ToString();
                }

                if (!string.IsNullOrWhiteSpace(customerFirstName) && !string.IsNullOrWhiteSpace(customerLastName))
                {
                    customerFullName = customerFirstName + " " + customerLastName;
                }

                if (entity.Contains("statuscode") && entity["statuscode"] != null)
                {
                    statusCode = ((OptionSetValue)entity["statuscode"]).Value;
                }

                if (preImage.Contains("statuscode") && preImage["statuscode"] != null)
                {
                    oldStatusCode = ((OptionSetValue)preImage["statuscode"]).Value;
                }
                #endregion

                if (statusCode != oldStatusCode && (statusCode == (int)DiscoveryFormStatus.CrmConfirmed || statusCode == (int)DiscoveryFormStatus.Result_Negative))
                {
                    string statusText = string.Empty;

                    if (statusCode == (int)DiscoveryFormStatus.CrmConfirmed)
                    {
                        statusText = "Kale Onayladı";
                    }
                    else if (statusCode == (int)DiscoveryFormStatus.Result_Negative)
                    {
                        statusText = "Sonuç Olumsuz";
                    }

                    string customerSmsText = @"Sayın {0}, {1} müşterisine ait Ücretsiz Keşif Formu durumu {2} olarak değişmiştir. Bilgilerinize.";

                    Entity ent = new Entity("new_sms");
                    ent["new_message"]     = string.Format(customerSmsText, assemblerFullName, customerFullName, statusText);
                    ent["new_phonenumber"] = assemblerInfo.MobilePhoneNumber;
                    ent["new_name"]        = customerFirstName + " " + customerLastName + "|KGS Formu Durum Değişimi";
                    ent["new_userid"]      = user;

                    service.Create(ent);
                }

                if (entity.Contains("statuscode") && entity["statuscode"] != null &&
                    ((OptionSetValue)entity["statuscode"]).Value == (int)DiscoveryFormStatus.CrmConfirmed)
                {
                    MsCrmResultObject limitRes = ScoreHelper.GetScoreLimitsByType(ScoreType.KGSSales, sda);

                    if (limitRes.Success)
                    {
                        lstLimits = (List <ScoreLimit>)limitRes.ReturnObject;

                        for (int i = 0; i < lstLimits.Count; i++)
                        {
                            Score sc = new Score()
                            {
                                Point     = lstLimits[i].Point,
                                Portal    = portal,
                                User      = user,
                                ScoreType = ScoreType.KGSSales
                            };

                            MsCrmResult scoreRes = ScoreHelper.CreateScore(sc, service);

                            if (scoreRes.Success)
                            {
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                //LOG
                throw new InvalidPluginExecutionException(ex.Message);
            }
            finally
            {
                if (sda != null)
                {
                    sda.closeConnection();
                }
            }
        }
コード例 #2
0
ファイル: PostCreate.cs プロジェクト: volkanytu/Portal
        public void Execute(IServiceProvider serviceProvider)
        {
            SqlDataAccess sda = null;

            try
            {
                sda = new SqlDataAccess();
                sda.openConnection(Globals.ConnectionString);

                #region | SERVICE |
                IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

                #region | Validate Request |
                //Target yoksa veya Entity tipinde değilse, devam etme.
                if (!context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity))
                {
                    return;
                }
                #endregion

                IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

                #endregion

                Entity entity = (Entity)context.InputParameters["Target"];

                #region | VARIABLES |
                bool hasMedia = false;

                List <ScoreLimit> lstLimits = new List <ScoreLimit>();

                EntityReference portal = null;
                EntityReference user   = null;

                if (entity.Contains("new_hasmedia") && entity["new_hasmedia"] != null)
                {
                    hasMedia = (bool)entity["new_hasmedia"];
                }

                if (entity.Contains("new_portalid") && entity["new_portalid"] != null)
                {
                    portal = (EntityReference)entity["new_portalid"];
                }

                if (entity.Contains("new_userid") && entity["new_userid"] != null)
                {
                    user = (EntityReference)entity["new_userid"];
                }
                #endregion

                MsCrmResultObject limitRes = new MsCrmResultObject();

                if (hasMedia)
                {
                    limitRes = ScoreHelper.GetScoreLimitsByType(ScoreType.GraffitiMedia, sda);
                }
                else
                {
                    limitRes = ScoreHelper.GetScoreLimitsByType(ScoreType.GraffitiText, sda);
                }


                if (limitRes.Success)
                {
                    lstLimits = (List <ScoreLimit>)limitRes.ReturnObject;

                    for (int i = 0; i < lstLimits.Count; i++)
                    {
                        int      recCount = 0;
                        DateTime start    = GeneralHelper.GetStartDateByScorePeriod(lstLimits[i].Period);
                        DateTime end      = GeneralHelper.GetEndDateByScorePeriod(lstLimits[i].Period);

                        recCount = GraffitiHelper.GetUserGraffitiCount(portal.Id, user.Id, start, end, hasMedia, sda);

                        if (lstLimits[i].Frequency >= recCount)
                        {
                            Score sc = new Score()
                            {
                                Point     = lstLimits[i].Point,
                                Portal    = portal,
                                User      = user,
                                ScoreType = (hasMedia ? ScoreType.GraffitiMedia : ScoreType.GraffitiText)
                            };

                            MsCrmResult scoreRes = ScoreHelper.CreateScore(sc, service);

                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                //LOG
                throw new InvalidPluginExecutionException(ex.Message);
            }
            finally
            {
                if (sda != null)
                {
                    sda.closeConnection();
                }
            }
        }
コード例 #3
0
ファイル: PostUpdate.cs プロジェクト: volkanytu/Portal
        public void Execute(IServiceProvider serviceProvider)
        {
            SqlDataAccess sda = null;

            try
            {
                sda = new SqlDataAccess();
                sda.openConnection(Globals.ConnectionString);

                #region | SERVICE |
                IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

                #region | Validate Request |
                //Target yoksa veya Entity tipinde değilse, devam etme.
                if (!context.InputParameters.Contains("Target") || !(context.InputParameters["Target"] is Entity))
                {
                    return;
                }
                #endregion

                IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

                #endregion

                Entity entity = (Entity)context.InputParameters["Target"];

                #region |DEFINE IMAGE IF EXISTS|
                Entity postImage = null;
                if (context.PostEntityImages.Contains("PostImage") && context.PostEntityImages["PostImage"] is Entity)
                {
                    postImage = (Entity)context.PostEntityImages["PostImage"];
                }
                #endregion

                #region | VARIABLES |
                List <ScoreLimit> lstLimits = new List <ScoreLimit>();

                EntityReference portal = null;
                EntityReference user   = null;

                if (postImage.Contains("new_portalid") && postImage["new_portalid"] != null)
                {
                    portal = (EntityReference)postImage["new_portalid"];
                }

                if (postImage.Contains("new_userid") && postImage["new_userid"] != null)
                {
                    user = (EntityReference)postImage["new_userid"];
                }
                #endregion

                if (entity.Contains("statuscode") && entity["statuscode"] != null && ((OptionSetValue)entity["statuscode"]).Value == 1)
                {
                    MsCrmResultObject limitRes = ScoreHelper.GetScoreLimitsByType(ScoreType.ForumSubject, sda);

                    if (limitRes.Success)
                    {
                        lstLimits = (List <ScoreLimit>)limitRes.ReturnObject;

                        for (int i = 0; i < lstLimits.Count; i++)
                        {
                            int      recCount = 0;
                            DateTime start    = GeneralHelper.GetStartDateByScorePeriod(lstLimits[i].Period);
                            DateTime end      = GeneralHelper.GetEndDateByScorePeriod(lstLimits[i].Period);

                            recCount = ForumHelper.GetUserForumSubjectCount(portal.Id, user.Id, start, end, sda);

                            if (lstLimits[i].Frequency >= recCount)
                            {
                                Score sc = new Score()
                                {
                                    Point     = lstLimits[i].Point,
                                    Portal    = portal,
                                    User      = user,
                                    ScoreType = ScoreType.ForumSubject
                                };

                                MsCrmResult scoreRes = ScoreHelper.CreateScore(sc, service);

                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                //LOG
                throw new InvalidPluginExecutionException(ex.Message);
            }
            finally
            {
                if (sda != null)
                {
                    sda.closeConnection();
                }
            }
        }