none
event receiver in production environment RRS feed

  • Question

  • i have itemupdated event receiver that works rename document based on filed values (classification of document). the fields in document libary that work this function are: 'Методологија','Врста документа', 'Врста ревизије', 'Субјект ревизије:Корисничко име субјекта ревизије', 'Субјект ревизије - сврсисходност'. The fields  'Методологија','Врста документа', 'Врста ревизије' are metadata fields, the field 'Субјект ревизије:Корисничко име субјекта ревизије is lookup field from anothe list. the field  'Субјект ревизије - сврсисходност' is choose field. this field has four values: 'Избор','OPS_Опште','PRE_Предстудија' and 'MTX_Матрица'   My receiver is working ok in test environment, but when i deploy in production envronment i have problem. when i choose value from 'Субјект ревизије - сврсисходност' field, this value is not added in document name for example i choose OPS_Опште. the part of code where i have problem is

       //subjekti revizije za reviziju svrsishodnost poslovanja
                            if (vrstarevizijebezguid == "Сврсисходности пословања")
                            {
                                if (properties.ListItem["Субјект ревизије - сврсисходност"].ToString() == "Изабери" || properties.ListItem["Субјект ревизије - сврсисходност"] == null)
                                {
                                    if (properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString() == "0;#")
                                    {
                                      //  properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"] = "000#NK";
                                     //   subjektrevizijesaguid = properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString();
                                      //  string[] subjektrevizijeizdvojenoI = subjektrevizijesaguid.Split('#');
                                     //   subjektrevizije = subjektrevizijeizdvojenoI[1];
                                        subjektrevizije = "NK";
                                    }
                                    else
                                    {
                                        subjektrevizije = subjektrevizijeizdvojeno[1];
                                        //     properties.ListItem["Субјект ревизије - сврсисходност"] = "NK_NNNN";
                                    }
                                }
                                else
                                {
                                    string[] simbolrevsvrs = subjektrevizijesvrsishodnostsadonjcrtom.Split(SEPdonjacrta);
                                    subjektrevizije = simbolrevsvrs[0];
                                }
                                }

    the whole code in itemupdated is

     public override void ItemUpdated(SPItemEventProperties properties)
            {
    
                this.EventFiringEnabled = false;
                
                    SPFile f = properties.ListItem.File;
                    string spfileExt = new FileInfo(f.Name).Extension;
    
                    if (properties.ListItem == null)
                    {
                        throw new ArgumentNullException("listItem");
                    }
                    string metodologija;
                    string vrstadokumenta = null;
                    //dodela vrednosti polju nekalsifikovano na bazi da li su polјa vrsta dokumenta, metodologija i subjekt revizije prazni
                    if (properties.ListItem["Врста документа"] == null || properties.ListItem["Субјект ревизије"] == null || properties.ListItem["Методологија"] == null)
                    {
                        properties.ListItem["Некласификовано"] = "Некласификовано";
                    }
                    else
                    {
                        properties.ListItem["Некласификовано"] = "Класификовано";
                    }            
                    
                // id broj dokumenta iz sharepointa
                    string brojdokumenta = properties.ListItemId.ToString();
              
                
                //KLASIFIKACIJA PO METODOLOGIJI, VRSTI DOKUMENTA, SUBJEKTU REVIZIJE
                //odvajanje guid-a od metodologije
                    string subjektrevizijesaguid = properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"] == null ? "000#NK" : properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString();
                    string subjektrevizijesvrsishodnostsadonjcrtom = properties.ListItem["Субјект ревизије - сврсисходност"] == null ? "Изабери_1" : properties.ListItem["Субјект ревизије - сврсисходност"].ToString();
                //   subjektrevizijesaguid = properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString() == "0;#" ? "000#NK" : properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString();    
                string[] subjektrevizijeizdvojeno = subjektrevizijesaguid.Split('#');
                string    subjektrevizije = subjektrevizijeizdvojeno[1];       
                string metodologijasaguid = properties.ListItem["Методологија"].ToString();
                        string metodologijabezguid;
                        string vrstadokumentasaguid = properties.ListItem["Врста документа"] == null ? "NK" : properties.ListItem["Врста документа"].ToString();
                        string vrstadokumentabezguid;
                        string vrstarevizijesaguid = properties.ListItem["Врста ревизије"] == null ? "Изабери|NNNN" : properties.ListItem["Врста ревизије"].ToString();
                        string vrstarevizijebezguid;
                 //separatori koji se koriste za razdvajanje  
                            char[] SEPuspravnalinija = new char[] { '|' };
                            char[] SEPdvetacke = new char[] { ':' };
                            char[] SEPdonjacrta = new char[] { '_' };
                            string[] metGUID = metodologijasaguid.Split(SEPuspravnalinija);
                            string[] vrdokGUID = vrstadokumentasaguid.Split(SEPuspravnalinija);
                            string[] vrrevGUID = vrstarevizijesaguid.Split(SEPuspravnalinija);
                //metapodatak bez GUID-a
                            metodologijabezguid = metGUID[0];
                            vrstadokumentabezguid = vrdokGUID[0];
                            vrstarevizijebezguid = vrrevGUID[0];
                //revizija svrsishodnosti bez donje crte
                            string[] revsvrsBDC = subjektrevizijesvrsishodnostsadonjcrtom.Split(SEPdonjacrta);
                            string revizijasvrsishodnostiBDC = revsvrsBDC[0];
                //odredivanje da li je vrsta dokumenta klasifikovana i ako jeste dodela simbola
                            if (vrdokGUID[0] == "")
                            {
                                vrstadokumenta = "NK";
                            }
                            else
                            {
                              //  string metavrstadokumenta = metodologijanivo[0];
                                string[] simboldokumenta = vrstadokumentabezguid.Split(SEPdonjacrta);
                                vrstadokumenta = simboldokumenta[0];
                            }
                            //subjekti revizije za reviziju svrsishodnost poslovanja
                            if (vrstarevizijebezguid == "Сврсисходности пословања")
                            {
                                if (properties.ListItem["Субјект ревизије - сврсисходност"].ToString() == "Изабери" || properties.ListItem["Субјект ревизије - сврсисходност"] == null)
                                {
                                    if (properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString() == "0;#")
                                    {
                                      //  properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"] = "000#NK";
                                     //   subjektrevizijesaguid = properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString();
                                      //  string[] subjektrevizijeizdvojenoI = subjektrevizijesaguid.Split('#');
                                     //   subjektrevizije = subjektrevizijeizdvojenoI[1];
                                        subjektrevizije = "NK";
                                    }
                                    else
                                    {
                                        subjektrevizije = subjektrevizijeizdvojeno[1];
                                        //     properties.ListItem["Субјект ревизије - сврсисходност"] = "NK_NNNN";
                                    }
                                }
                                else
                                {
                                    string[] simbolrevsvrs = subjektrevizijesvrsishodnostsadonjcrtom.Split(SEPdonjacrta);
                                    subjektrevizije = simbolrevsvrs[0];
                                }
                                }
    
                //odredjivanje nivoa u metapodatku, kao hijerarhija foldera                                  
                            string[] metodologijanivo = metodologijabezguid.Split(SEPdvetacke);
                            int brojnivoa = metodologijanivo.Length;
                            
                            if(metodologijanivo[0] == "" && brojnivoa == 1)
                               {
                                properties.ListItem["Име_за_маил"] = "Некласификовано-" + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                properties.ListItem["Име"] = "Некласификовано-" + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                properties.ListItem.Update();
                                }
                             else if (brojnivoa == 1)
                                {
                                 string Inivo = metodologijanivo[0];
                                 string [] metodologijaInivo = Inivo.Split(SEPdonjacrta);
                                 string metodologija1_O = metodologijaInivo[0];
                                 metodologija = metodologija1_O;
                                 properties.ListItem["Име_за_маил"] = "Некласификовано-" + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem["Име"] = "Некласификовано-" + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem.Update();
                                }
                             
                
                            if (brojnivoa == 2)
                             {
                                 string Inivo = metodologijanivo[0];
                                 string IInivo = metodologijanivo[1];
                                 string[] metodologijaInivo = Inivo.Split(SEPdonjacrta);
                                 string[] metodologijaIInivo = IInivo.Split(SEPdonjacrta);
                                 string metodologija1_O = metodologijaInivo[0];
                                 string metodologija2_O = metodologijaIInivo[0];
                                 metodologija = metodologija2_O;
                                properties.ListItem["Име"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                
                                 properties.ListItem["Име_за_маил"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem.Update();
                                
                             }
                             
                            if (brojnivoa == 3)
                             {
    
                                 string Inivo = metodologijanivo[0];
                                 string IInivo = metodologijanivo[1];
                                 string IIInivo = metodologijanivo[2];
                                 string[] metodologijaInivo = Inivo.Split(SEPdonjacrta);
                                 string[] metodologijaIInivo = IInivo.Split(SEPdonjacrta);
                                 string[] metodologijaIIInivo = IIInivo.Split(SEPdonjacrta);
                                 string metodologija1_O = metodologijaInivo[0];
                                 string metodologija2_O = metodologijaIInivo[0];
                                 string metodologija3_O = metodologijaIIInivo[0];
                                 metodologija = metodologija2_O + metodologija3_O;
                                 properties.ListItem["Име_за_маил"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem["Име"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                 properties.ListItem.Update();
                             }
                            if (brojnivoa == 4)
                            {
    
                                string Inivo = metodologijanivo[0];
                                string IInivo = metodologijanivo[1];
                                string IIInivo = metodologijanivo[2];
                                string IVnivo = metodologijanivo[3];
                                string[] metodologijaInivo = Inivo.Split(SEPdonjacrta);
                                string[] metodologijaIInivo = IInivo.Split(SEPdonjacrta);
                                string[] metodologijaIIInivo = IIInivo.Split(SEPdonjacrta);
                                string[] metodologijaIVnivo = IVnivo.Split(SEPdonjacrta);
                                string metodologija1_O = metodologijaInivo[0];
                                string metodologija2_O = metodologijaIInivo[0];
                                string metodologija3_O = metodologijaIIInivo[0];
                                string metodologija4_O = metodologijaIVnivo[0];
                                metodologija = metodologija2_O + metodologija3_O + metodologija4_O;
                                properties.ListItem["Име_за_маил"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                properties.ListItem["Име"] = metodologija + "_" + vrstadokumenta + "_" + subjektrevizije + "_" + brojdokumenta + spfileExt;
                                properties.ListItem.Update();
                            }
                       //     if (properties.BeforeProperties["Име"] != properties.AfterProperties["Име"])
                        //    {
                        //        properties.ListItem["Име"] = properties.AfterProperties["Име"];
                        //    }
                            string imedokumentazaodobravanje = properties.ListItem["Име_за_маил"].ToString();
                // ODOBRAVANJE DOKUMENTA 3 NIVOA ZAPOSLENI, VODJA TIMA, VRHOVNI
                            var obradjivac = properties.ListItem["Обрађивач - одобрење"] == null ? "Изабери" : properties.ListItem["Обрађивач - одобрење"].ToString();
                            var vodjatima = properties.ListItem["Вођа тима - одобрење"] == null ? "Изабери" : properties.ListItem["Вођа тима - одобрење"].ToString();
                            var vrhovni = properties.ListItem["Врховни ревизор - одобрење"] == null ? "Изабери" : properties.ListItem["Врховни ревизор - одобрење"].ToString();
                            string vracanjenaobraduvodjatima = properties.ListItem["Број(Вођа тима - враћање на поновну обраду)"].ToString();
                           string vracanjenaobraduvrhovnirevizor = properties.ListItem["Број(Врховни ревизор - враћање на поновну обраду)"].ToString();
                            
                            if (vodjatima.ToString() == "Не")
                            {
                                properties.ListItem["Обрађивач - одобрење"] = "Не";
                                properties.ListItem["Вођа тима - одобрење"] = "Изабери";
                                properties.ListItem["Врховни ревизор - одобрење"] = "Изабери";
                                double broj_v = Convert.ToDouble(vracanjenaobraduvodjatima);
                               broj_v = broj_v + 1;
                                properties.ListItem["Број(Вођа тима - враћање на поновну обраду)"] = broj_v;
                            }
                            else if (vodjatima.ToString() == "Изабери" && obradjivac.ToString() == "Да" && vrhovni.ToString() == "Изабери")
                            {
                                
                                string url = properties.WebUrl;
                                using (SPSite site = new SPSite(url))
                                {
                                    using (SPWeb web = site.OpenWeb())
                                    {
                                        // myemail@test.com is obviously replaced with a real working email
                                       SendMail(web, "podrska@dri.rs", properties.ListItem["Субјект ревизије:Вођа тима - Е-маил"].ToString(), "Обавештење о одобрењу документа - Вођа тима", "Потребно је одобрити документ" + " " + imedokumentazaodobravanje + ", локација за одобрење " + properties.WebUrl, "", "");
                                    //    SendMail(web, "podrska@dri.rs", properties.ListItem["Субјект ревизије:Вођа тима - Е-маил"].ToString(), "Обавештење о одобрењу документа - Вођа тима", "Потребно је одобрити документ" + " " + properties.ListItem["Име"].ToString() + ", локација за одобрење " + properties.WebUrl, "", "");
                                    
                                    }
                                }
                            }
                            
                           if (vrhovni.ToString() == "Не")
                            {
                                properties.ListItem["Обрађивач - одобрење"] = "Не";
                                properties.ListItem["Вођа тима - одобрење"] = "Изабери";
                                properties.ListItem["Врховни ревизор - одобрење"] = "Изабери";
                                double broj_vr = Convert.ToDouble(vracanjenaobraduvrhovnirevizor);
                                broj_vr = broj_vr + 1;
                                properties.ListItem["Број(Врховни ревизор - враћање на поновну обраду)"] = broj_vr;
    
                            }
                           else if (vrhovni.ToString() == "Изабери" && vodjatima.ToString() == "Да" && obradjivac.ToString() == "Да")
                           {
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       // myemail@test.com is obviously replaced with a real working email
                                       
                                       SendMail(web, "podrska@dri.rs", properties.ListItem["Субјект ревизије:Врховни ревизор - Е-маил"].ToString(), "Обавештење о одобрењу документа - Врховни ревизор", "Потребно је одобрити документ"+" "+properties.ListItem["Име"]+", локација за одобрење " + properties.WebUrl+"/" + properties.List.Views["Сви документи"].Url, "", "");
                                   }
                               }
                           }
                           if (properties.ListItem["Обрађивач - одобрење"].ToString() == "Не")
                           {
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                       string user = users.User.Email;
                                     
                                      
                                                           SendMail(web, "podrska@dri.rs", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " није одобрен. Потребно је направити измене на документу, локација за измене на документу " + properties.WebUrl, "", "");                            
    
                                       // myemail@test.com is obviously replaced with a real working email
                                        }
                               }
                           }
                           else if (vrhovni.ToString() == "Да" && vodjatima.ToString() == "Да" && obradjivac.ToString() == "Да")
                           {
                               string url = properties.WebUrl;
                               using (SPSite site = new SPSite(url))
                               {
                                   using (SPWeb web = site.OpenWeb())
                                   {
                                       SPFieldUserValue users = new SPFieldUserValue(web, properties.ListItem["Креирао"].ToString());
                                       string user = users.User.Email;
                                       
                                                       // myemail@test.com is obviously replaced with a real working email
                                                       SendMail(web, "podrska@dri.rs", user, "Обавештење о одобрењу документа - Обрађивач", "Ваш документ " + properties.ListItem["Име"] + " је одобрен. Локација одобреног документа је " + properties.WebUrl, "", "");
                                                   
                                                                                      
                                       
                                                       }
                               }
                           }
                          
                properties.ListItem.SystemUpdate();
    
                this.EventFiringEnabled = true;
    
             }
    the field  'Субјект ревизије - сврсисходност' is primary in the relationship field  'Субјект ревизије:Корисничко име субјекта ревизије'. when i choose both fields in document name is displayed values from 'Субјект ревизије - сврсисходност' field. when the field 'Субјект ревизије - сврсисходност' field is not choosed and the field  'Субјект ревизије:Корисничко име субјекта ревизије' is choosed. in the document name is displayed  'Субјект ревизије:Корисничко име субјекта ревизије' field value.


    Monday, August 5, 2019 8:52 AM

Answers

  • Hi,

    I remember in a previous thread, the choice field in the edit form is hidden/show based on some  condition with JavaScript code.

    For choice field value, if the value 'Изабери' existed in the options, then it won't have problem to check:

    Thanks

    Best Regards


    Please remember to mark the replies as answers if they helped. If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    SharePoint Server 2019 has been released, you can click here to download it.
    Click here to learn new features. Visit the dedicated forum to share, explore and talk to experts about SharePoint Server 2019.

    Wednesday, August 7, 2019 7:36 AM

All replies

  • i tryed this code

             if (vrstarevizijebezguid == "Сврсисходности пословања")
                            {
                                if (properties.ListItem["Субјект ревизије - сврсисходност"].ToString() == "Изабери" || properties.ListItem["Субјект ревизије - сврсисходност"] == null)
                                {
                                    if (properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString() == "0;#")
                                    {
                                      //  properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"] = "000#NK";
                                     //   subjektrevizijesaguid = properties.ListItem["Субјект ревизије:Корисничко име субјекта ревизије"].ToString();
                                      //  string[] subjektrevizijeizdvojenoI = subjektrevizijesaguid.Split('#');
                                     //   subjektrevizije = subjektrevizijeizdvojenoI[1];
                                        subjektrevizije = "NK";
                                    }
                                    else
                                    {
                                        subjektrevizije = subjektrevizijeizdvojeno[1];
                                        //     properties.ListItem["Субјект ревизије - сврсисходност"] = "NK_NNNN";
                                    }
                                }
                                else
                                {
                                    string[] simbolrevsvrs = subjektrevizijesvrsishodnostsadonjcrtom.Split(SEPdonjacrta);
                                    subjektrevizije = simbolrevsvrs[0];
                                }
                                }


    that i repalce with

     subjektrevizije = vrstarevizijebezguid == "Сврсисходности пословања" && properties.ListItem["Субјект ревизије - сврсисходност"] != "Изабери" ? revizijasvrsishodnostiBDC : subjektrevizije;
                            subjektrevizije = vrstarevizijebezguid == "Сврсисходности пословања" && properties.ListItem["Субјект ревизије - сврсисходност"] == "Изабери" ? subjektrevizijeizdvojeno[1] : subjektrevizije;
                            

    but line displays in the debugging next message

    "possible unintended reference in comparasion; to get a value of comparasion, cast the left hand side to type 'string' "

    what i do?

    Tuesday, August 6, 2019 5:45 AM
  • Hi,

    I understand there is a choice field value not added into document name, I checked the code snippet, you are checking the choice field value equals to "Изабери".

    While in original question, you posted the values are 'Избор','OPS_Опште','PRE_Предстудија' and 'MTX_Матрица',so please make sure in the choice field options, the value checked existed, I add this value to choice field options like this:

    Update the item with "Изабери" value for choice field to do a test, then the if condition will meet and execute the logic:


    Thanks

    Best Regards


    Please remember to mark the replies as answers if they helped. If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    SharePoint Server 2019 has been released, you can click here to download it.
    Click here to learn new features. Visit the dedicated forum to share, explore and talk to experts about SharePoint Server 2019.

    Tuesday, August 6, 2019 7:11 AM
  • my mistake  instead field value 'Избор' is 'Изабери'. i don't have value 'Избор'
    Tuesday, August 6, 2019 7:50 AM
  • my field 'Субјект ревизије - сврсисходност'  is hidden in edit form until 'Врста ревизије' field is not 'Ревизија Сврсисходности'. when  'Ревизија Сврсисходности'. field has value 'Сврсисходности пословања' field 'Субјект ревизије - сврсисходност' is displayed and i choose value.
    Tuesday, August 6, 2019 11:10 AM
  • Hi,

    I remember in a previous thread, the choice field in the edit form is hidden/show based on some  condition with JavaScript code.

    For choice field value, if the value 'Изабери' existed in the options, then it won't have problem to check:

    Thanks

    Best Regards


    Please remember to mark the replies as answers if they helped. If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    SharePoint Server 2019 has been released, you can click here to download it.
    Click here to learn new features. Visit the dedicated forum to share, explore and talk to experts about SharePoint Server 2019.

    Wednesday, August 7, 2019 7:36 AM