コード例 #1
0
        public ActionResult CreateFromSales(SalesContactHelper model)
        {
            try
            {
                _db.Contacts.Add(new Contact
                {
                    OrganizationId    = model.OrganizationId,
                    ContactFirstName  = model.FirstName,
                    ContactLastName   = model.LastName,
                    Title             = model.TitleFunction,
                    TelephoneNumber   = model.Telephone,
                    MobilePhoneNumber = model.Mobile,
                    Email             = model.ContactEmail,
                    User        = User.Identity.Name,
                    InsertDate  = DateTime.Now,
                    ContactType = Contact.ContactTypeEnum.Sales,
                });

                _db.SaveChanges();
            }

            // We are catching the error which validates the Entity status.
            // On this method we will maybe have wrong e-mail address enteres in the first place and the validation will break.
            catch (DbEntityValidationException dbeve)
            {
                string dbValidationMessages = string.Empty;

                foreach (var err in dbeve.EntityValidationErrors)
                {
                    foreach (var mes in err.ValidationErrors)
                    {
                        dbValidationMessages += mes.ErrorMessage + "/" + mes.PropertyName + ",";
                    }
                }

                _helper.LogError(@"Contact - CreateFromSales", "EntityId: " + model.RelatedEntityId + ", Entity: " + model.EntityType,
                                 @"Prilikom kreiranja kontakta javila se greška: " + dbeve.Message, "Rezultati validacije: " + dbValidationMessages, string.Empty, User.Identity.Name);

                var errorModel = new ErrorModelHelper()
                {
                    ErrorTitle             = @"Greška validacije",
                    ErrorDescription       = @"Prilikom kreiranja kontakta javila se greška: " + dbeve.Message,
                    ErrorArguments         = dbValidationMessages,
                    ErrorException         = dbeve,
                    ErrorSuggestedSolution = @"Molimo pokušajte ispraviti pogrešno unesene argumente!"
                };

                return(View("ErrorNew", errorModel));
            }

            return(Redirect(Request.UrlReferrer?.ToString()));
        }
コード例 #2
0
        /// <summary>
        /// Method for syncing the information with 3rd party service
        /// </summary>
        /// <param name="merId"></param>
        /// <returns></returns>
        public ActionResult SyncOrganizationData(int merId)
        {
            var organization = _db.Organizations.First(o => o.MerId == merId);

            OrganizationSyncedInfo.SyncServiceEnum serviceId;

            try
            {
                if (App.Country == "Croatia")
                {
                    var service = new CroatiaBizService();
                    serviceId = OrganizationSyncedInfo.SyncServiceEnum.CroatiaBiz;
                    var syncedInfo = service.Oib(organization.VAT);

                    _db.OrganizationSyncedInfos.Add(new OrganizationSyncedInfo
                    {
                        MerId                        = merId,
                        SyncedSubjectName            = syncedInfo.data.subject,
                        OrganizationLegalNumber      = syncedInfo.data.mb,
                        SyncedAddress                = syncedInfo.data.address,
                        SyncedPostalCode             = int.Parse(syncedInfo.data.zip),
                        SyncedCity                   = syncedInfo.data.city,
                        OrganizationBusinessTypeCode = syncedInfo.data.nkd_key,
                        OrganizationBusinessTypeName = syncedInfo.data.nkd_name,
                        Active                       = syncedInfo.data.active,
                        ServiceId                    = serviceId,
                        InsertDate                   = DateTime.Now,
                        UpdateDate                   = DateTime.Now
                    });
                    _db.SaveChanges();
                }
            }
            catch (JsonSerializationException jse)
            {
                _helper.LogError(@"Organizations - SyncOrganizationData", "OrganizationId: " + merId,
                                 @"Prilikom sinkronizacije podataka tvrtke s vanjskim servisom, javila se sljedeća greška: " + jse.Message, string.Empty, string.Empty, User.Identity.Name);

                var errorModel = new ErrorModelHelper()
                {
                    ErrorTitle             = @"Greška prilikom sinkronizacije",
                    ErrorDescription       = @"Prilikom sinkronizacije podataka tvrtke s vanjskim servisom, javila se sljedeća greška: " + jse.Message,
                    ErrorArguments         = @"ID subjekta: " + merId + ", VAT: " + organization.VAT,
                    ErrorException         = jse,
                    ErrorSuggestedSolution = @"Provjerite pokušavate li sinkronizirati podatke za aktivnu tvrtku!"
                };

                return(View("ErrorNew", errorModel));
            }

            return(Redirect(Request.UrlReferrer?.ToString()));
        }
コード例 #3
0
        public ActionResult DownloadEmailBaseUnimported(int campaignId)
        {
            var path = Path.Combine(App.ExportPathGlobal + @"Campaigns\EmailBasesForImport\", campaignId + "_unimported.xlsx");

            if (System.IO.File.Exists(path))
            {
                var file = System.IO.File.ReadAllBytes(path);
                return(File(file, "application/vnd.ms-excel", "Baza_" + campaignId + "_neučitani.xlsx"));
            }
            else
            {
                var errorModel = new ErrorModelHelper()
                {
                    ErrorTitle             = @"Nepostojeća datoteka",
                    ErrorDescription       = @"Pokušavate preuzeti datoteku koja ne postoji na serveru!",
                    ErrorArguments         = string.Empty,
                    ErrorException         = new Exception(),
                    ErrorSuggestedSolution = @"Molimo provjerite postoje li neučitani OIB-ovi!"
                };

                return(View("ErrorNew", errorModel));
            }
        }
コード例 #4
0
        public ActionResult DownloadEmailBase(int campaignId, string initiator)
        {
            string filepath = Path.Combine(App.ExportPathGlobal + @"Campaigns\EmailBasesForImport\", campaignId + ".xlsx");

            if (System.IO.File.Exists(filepath))
            {
                var file = System.IO.File.ReadAllBytes(filepath);
                return(File(file, "application/vnd.ms-excel", "Baza_" + campaignId + ".xlsx"));
            }
            else
            {
                var errorModel = new ErrorModelHelper()
                {
                    ErrorTitle             = @"Nepostojeća datoteka",
                    ErrorDescription       = @"Pokušavate preuzeti datoteku koja ne postoji na serveru!",
                    ErrorArguments         = string.Empty,
                    ErrorException         = new Exception(),
                    ErrorSuggestedSolution = @"Molimo obratite se agentu koji je pokrenuo kampanju (" + initiator + ") !"
                };

                return(View("ErrorNew", errorModel));
            }
        }
コード例 #5
0
        public ActionResult MassUpdateClosedSubjects(HttpPostedFileBase file)
        {
            try
            {
                int updatedEntities = 0;
                int passedEntities  = 0;

                var wb = new ExcelPackage(file.InputStream);
                var ws = wb.Workbook.Worksheets[1];

                for (int i = ws.Dimension.Start.Row; i <= ws.Dimension.End.Row; i++)
                {
                    object vat;

                    if ((vat = ws.Cells[i, 1].Value) != null)
                    {
                        string vatTemp = vat.ToString();

                        if (_db.Organizations.Any(o => (o.SubjectBusinessUnit == "" || o.SubjectBusinessUnit == "11" /*DHL hack/fix*/) && o.VAT == vatTemp))
                        {
                            var organization = _db.Organizations.First(o => (o.SubjectBusinessUnit == "" || o.SubjectBusinessUnit == "11" /*DHL hack/fix*/) && o.VAT == vatTemp);
                            organization.IsActive = false;
                            organization.MerDeliveryDetail.AcquiredReceivingInformation           = "ZATVORENA TVRTKA";
                            organization.MerDeliveryDetail.AcquiredReceivingInformationIsVerified = true;
                            _acquireEmailMethodHelpers.UpdateClosedSubjectEntities(organization.MerId);
                            _opportunityHelperMethods.UpdateClosedSubjectOpportunities(organization.MerId);
                            updatedEntities++;
                        }
                        else
                        {
                            passedEntities++;
                        }
                    }
                    else
                    {
                        continue;
                    }
                }

                _db.ActivityLogs.Add(new ActivityLog()
                {
                    ActivityType         = ActivityLog.ActivityTypeEnum.System,
                    Department           = ActivityLog.DepartmentEnum.MojCrm,
                    InsertDate           = DateTime.Now,
                    IsSuspiciousActivity = false,
                    Module      = ActivityLog.ModuleEnum.MojCrm,
                    ReferenceId = 0,
                    User        = User.Identity.Name,
                    Description = @"Moj-CRM -- MassUpdateClosedSubjects -- Ukupno je ažurirano " + updatedEntities + " tvrtki, a " +
                                  passedEntities + " nije ažurirano."
                });
                _db.SaveChanges();

                wb.Dispose();
                return(View("Index"));
            }
            catch (COMException come)
            {
                _helper.LogError(@"Administration - MassUpdateClosedSubjects", string.Empty,
                                 @"Prilikom učitavanja predmeta za masovnu obradu zatvorenih tvrtki javila se greška: " + come.Message, come.InnerException.Message, string.Empty, User.Identity.Name);

                var errorModel = new ErrorModelHelper()
                {
                    ErrorTitle             = @"Greška u datoteci",
                    ErrorDescription       = @"Prilikom učitavanja predmeta za masovnu obradu zatvorenih tvrtki javila se greška: " + come.Message,
                    ErrorArguments         = string.Empty,
                    ErrorException         = come,
                    ErrorSuggestedSolution = @"Molimo pokušajte učitati datoteku u .xlsx formatu!"
                };

                return(View("ErrorNew", errorModel));
            }
        }
コード例 #6
0
        // GET: Sales/Opportunities/Details/5
        public ActionResult Details(int id)
        {
            try
            {
                Opportunity opportunity         = _db.Opportunities.Find(id);
                string      relatedCampaignName = String.Empty;
                if (opportunity == null)
                {
                    return(HttpNotFound());
                }

                var relatedSalesContacts = _db.Contacts.Where(c =>
                                                              c.Organization.MerId == opportunity.RelatedOrganizationId &&
                                                              c.ContactType == Contact.ContactTypeEnum.Sales);
                var relatedOpportunityNotes = _db.OpportunityNotes.Where(n =>
                                                                         n.RelatedOpportunityId == opportunity.OpportunityId).OrderByDescending(n => n.InsertDate);
                var relatedOpportunityActivities = _db.ActivityLogs.Where(a =>
                                                                          a.ReferenceId == id && a.Module == ModuleEnum.Opportunities).OrderByDescending(a => a.InsertDate);
                var relatedOrganization = _db.Organizations.First(o => o.MerId == opportunity.RelatedOrganizationId);
                if (opportunity.RelatedCampaignId != null)
                {
                    var relatedCampaign = _db.Campaigns.First(c => c.CampaignId == opportunity.RelatedCampaignId);
                    relatedCampaignName = relatedCampaign.CampaignName;
                }
                var users         = _db.Users;
                var relatedLeadId = 0;
                if (opportunity.OpportunityStatus == Opportunity.OpportunityStatusEnum.Lead)
                {
                    relatedLeadId = _db.Leads.Where(l => l.RelatedOpportunityId == id).Select(l => l.LeadId).First();
                }
                //var _LastOpportunityNote = (from n in db.OpportunityNotes
                //                            where n.RelatedOpportunityId == opportunity.OpportunityId
                //                            select n).OrderByDescending(n => n.InsertDate).Select(n => n.Note).First().ToString();

                var salesNoteTemplates = new List <ListItem>
                {
                    new ListItem {
                        Value = @"razloženo funkcioniranje servisa (opis onoga što se dogodi nakon što korisnik klikne pošalji eRačun)", Text = @"razloženo funkcioniranje servisa (opis onoga što se dogodi nakon što korisnik klikne pošalji eRačun)"
                    },
                    new ListItem {
                        Value = @"argumentirana korisnička podrška -- ažuriranje mailova (90% uspješnost), slanje tipske obavijesti, zvanje za preuzimanje (97% uspješnost)", Text = @"argumentirana korisnička podrška -- ažuriranje mailova (90% uspješnost), slanje tipske obavijesti, zvanje za preuzimanje (97% uspješnost)"
                    },
                    new ListItem {
                        Value = @"objašnjena tehnička pozadina s ERPom", Text = @"objašnjena tehnička pozadina s ERPom"
                    },
                    new ListItem {
                        Value = @"objašnjena tehnička pozadina s eRa aplikacijom", Text = @"objašnjena tehnička pozadina s eRa aplikacijom"
                    },
                    new ListItem {
                        Value = @"razložena potvrda primitka, pretraživanje i arhiviranje", Text = @"razložena potvrda primitka, pretraživanje i arhiviranje"
                    },
                    new ListItem {
                        Value = @"istaknuta jednostavnost uvođenja (kod izgovora nemamo vremena, prostora, u restrukturiranju smo)", Text = @"istaknuta jednostavnost uvođenja (kod izgovora nemamo vremena, prostora, u restrukturiranju smo)"
                    },
                    new ListItem {
                        Value = @"osvježen kontakt i iznesene novosti", Text = @"osvježen kontakt i iznesene novosti"
                    },
                    new ListItem {
                        Value = @"izvršen kvalitetan presing", Text = @"izvršen kvalitetan presing"
                    },
                    new ListItem {
                        Value = @"izvršen salesforce (isticanje benefita uz forzu)", Text = @"izvršen salesforce (isticanje benefita uz forzu)"
                    },
                    new ListItem {
                        Value = @"poslan mail ps (prijedlog suradnje)", Text = @"poslan mail ps (prijedlog suradnje)"
                    },
                    new ListItem {
                        Value = @"kreirati i odaslati PND", Text = @"kreirati i odaslati PND"
                    },
                    new ListItem {
                        Value = @"kreirati i odaslati UO", Text = @"kreirati i odaslati UO"
                    },
                    new ListItem {
                        Value = @"održan sastanak, poslan FU", Text = @"održan sastanak, poslan FU"
                    },
                    new ListItem {
                        Value = @"objašnjena zakonska pozadina i pravovaljanost eRačuna", Text = @"objašnjena zakonska pozadina i pravovaljanost eRačuna"
                    },
                    new ListItem {
                        Value = @"kontaktirani za uvođenje zaprimanja", Text = @"kontaktirani za uvođenje zaprimanja"
                    },
                    new ListItem {
                        Value = @"obrazložio slanje privitaka", Text = @"obrazložio slanje privitaka"
                    },
                    new ListItem {
                        Value = @"obrazložio procesnu pokrivenost primatelja te odagnao brige i strahove u vezi preuzimanja od strane njihovih kupaca", Text = @"obrazložio procesnu pokrivenost primatelja te odagnao brige i strahove u vezi preuzimanja od strane njihovih kupaca"
                    }
                };

                var rejectReasonList = new List <ListItem>
                {
                    new ListItem {
                        Value = @"0", Text = @"Ne želi navesti"
                    },
                    new ListItem {
                        Value = @"1", Text = @"Nema interesa za uslugu"
                    },
                    new ListItem {
                        Value = @"2", Text = @"Previsoka cijena"
                    },
                    new ListItem {
                        Value = @"3", Text = @"Neadekvatna ponuda"
                    },
                    new ListItem {
                        Value = @"4", Text = @"Koristi drugog posrednika"
                    },
                    new ListItem {
                        Value = @"5", Text = @"Nedostatak vremena za pokretanje projekta"
                    },
                    new ListItem {
                        Value = @"6", Text = @"Dio strane grupacije / Strano vlasništvo"
                    },
                    new ListItem {
                        Value = @"7", Text = @"Drugo / Ostalo"
                    },
                };

                var opportunityDetails = new OpportunityDetailViewModel()
                {
                    OpportunityId           = id,
                    OpportunityDescription  = opportunity.OpportunityDescription,
                    OpportunityStatus       = opportunity.OpportunityStatus,
                    OpportunityStatusString = opportunity.OpportunityStatusString,
                    RejectReason            = opportunity.OpportunityRejectReasonString,
                    OrganizationId          = opportunity.RelatedOrganizationId,
                    OrganizationName        = relatedOrganization.SubjectName,
                    OrganizationVAT         = relatedOrganization.VAT,
                    TelephoneNumber         = relatedOrganization.OrganizationDetail.TelephoneNumber,
                    MobilePhoneNumber       = relatedOrganization.OrganizationDetail.MobilePhoneNumber,
                    Email = relatedOrganization.OrganizationDetail.EmailAddress,
                    ERP   = relatedOrganization.OrganizationDetail.ERP,
                    NumberOfInvoicesSent     = relatedOrganization.OrganizationDetail.NumberOfInvoicesSent,
                    NumberOfInvoicesReceived = relatedOrganization.OrganizationDetail.NumberOfInvoicesReceived,
                    RelatedCampaignId        = opportunity.RelatedCampaignId,
                    RelatedCampaignName      = relatedCampaignName,
                    IsAssigned                   = opportunity.IsAssigned,
                    AssignedTo                   = opportunity.AssignedTo,
                    LastContactedDate            = opportunity.LastContactDate,
                    LastContactedBy              = opportunity.LastContactedBy,
                    RelatedSalesContacts         = relatedSalesContacts,
                    RelatedOpportunityNotes      = relatedOpportunityNotes,
                    RelatedOpportunityActivities = relatedOpportunityActivities,
                    Users = users,
                    SalesNoteTemplates = salesNoteTemplates,
                    RejectReasons      = rejectReasonList,
                    RelatedLeadId      = relatedLeadId
                };

                return(View(opportunityDetails));
            }
            catch (InvalidOperationException ioe)
            {
                _helper.LogError(@"Opportunities - Details", id.ToString(), @"Prilikom ulaska u detalje prodajne prilike javila se greška: " + ioe.Message,
                                 ioe.InnerException.Message, string.Empty, User.Identity.Name);

                var errorModel = new ErrorModelHelper()
                {
                    ErrorTitle             = @"Nepostojeći lead",
                    ErrorDescription       = @"Prilikom ulaska u detalje prodajne prilike javila se greška:  " + ioe.Message,
                    ErrorArguments         = @"ID prodajne prilike: " + id.ToString(),
                    ErrorException         = ioe,
                    ErrorSuggestedSolution = @"Ova prodajna prilika ima status 'Kreiran lead', ali nije moguće pronaći povezani lead. Molimo obratite se administratoru kako bi omogućio ulazak u navedenu prodajnu priliku!"
                };

                return(View("ErrorNew", errorModel));
            }
        }
コード例 #7
0
        public ActionResult InsertEntities(HttpPostedFileBase file, int campaignId)
        {
            try
            {
                int           importedEntities = 0;
                int           validEntities    = 0;
                List <string> validVats        = new List <string>();
                int           invalidEntities  = 0;
                List <string> invalidVats      = new List <string>();
                var           campaign         = _db.Campaigns.First(c => c.CampaignId == campaignId);

                var wb = new ExcelPackage(file.InputStream);
                var ws = wb.Workbook.Worksheets[1];

                for (int i = ws.Dimension.Start.Row; i <= ws.Dimension.End.Row; i++)
                {
                    object vat;

                    if ((vat = ws.Cells[i, 1].Value) != null)
                    {
                        string vatTemp = vat.ToString();

                        if (_db.Organizations.Any(o => (o.SubjectBusinessUnit == "" || o.SubjectBusinessUnit == "11" /*DHL hack/fix*/) && o.VAT == vatTemp))
                        {
                            var organization = _db.Organizations.First(o => (o.SubjectBusinessUnit == "" || o.SubjectBusinessUnit == "11" /*DHL hack/fix*/) && o.VAT == vatTemp);
                            validVats.Add(vatTemp);

                            _db.Educations.Add(new Education
                            {
                                EducationEntityTitle  = organization.SubjectName,
                                RelatedCampaignId     = campaignId,
                                RelatedOrganizationId = organization.MerId,
                                EducationEntityStatus = Education.EducationEntityStatusEnum.Created,
                                CreatedBy             = User.Identity.Name,
                                IsAssigned            = false,
                                InsertDate            = DateTime.Now
                            });

                            importedEntities++;
                            _db.SaveChanges();

                            validEntities++;
                        }
                        else
                        {
                            invalidVats.Add(vatTemp);
                            invalidEntities++;
                        }
                    }
                    else
                    {
                        continue;
                    }
                }

                var model = new EducationImportResults
                {
                    CampaignId       = campaignId,
                    ValidEntities    = validEntities,
                    InvalidEntities  = invalidEntities,
                    ImportedEntities = importedEntities,
                    ValidVATs        = validVats,
                    InvalidVATs      = invalidVats
                };

                wb.Dispose();
                return(View(model));
            }
            catch (COMException come)
            {
                _helper.LogError(@"Education - InsertEntities", "CampaignId: " + campaignId,
                                 @"Prilikom učitavanja predmeta za edukaciju javila se greška: " + come.Message, come.InnerException.Message, string.Empty, User.Identity.Name);

                var errorModel = new ErrorModelHelper()
                {
                    ErrorTitle             = @"Greška u datoteci",
                    ErrorDescription       = @"Prilikom učitavanja predmeta za edukaciju javila se greška: " + come.Message,
                    ErrorArguments         = string.Empty,
                    ErrorException         = come,
                    ErrorSuggestedSolution = @"Molimo pokušajte učitati datoteku u .xlsx formatu!"
                };

                return(View("ErrorNew", errorModel));
            }
        }
コード例 #8
0
        public ActionResult CheckEntitiesForImport(HttpPostedFileBase file, int campaignId)
        {
            try
            {
                int           importedEntities = 0;
                int           validEntities    = 0;
                List <string> validVats        = new List <string>();
                int           invalidEntities  = 0;
                List <string> invalidVats      = new List <string>();

                //string filepath = Path.Combine(Server.MapPath("~/ImportFiles"), "ImportAcquireEmail.xls");
                //if(!create)
                //    file.SaveAs(filepath);

                var wb = new ExcelPackage(file.InputStream);
                var ws = wb.Workbook.Worksheets[1];

                for (int i = ws.Dimension.Start.Row; i <= ws.Dimension.End.Row; i++)
                {
                    object vat;

                    if ((vat = ws.Cells[i, 1].Value) != null)
                    {
                        string vatTemp = vat.ToString();

                        if (_db.Organizations.Any(o => (o.SubjectBusinessUnit == "" || o.SubjectBusinessUnit == "11" /*DHL hack/fix*/) && o.VAT == vatTemp))
                        {
                            validVats.Add(vatTemp);
                            ImportEntities(campaignId, vatTemp);
                            importedEntities++;

                            validEntities++;
                        }
                        else
                        {
                            invalidVats.Add(vatTemp);
                            invalidEntities++;
                        }
                    }
                    else
                    {
                        continue;
                    }
                }

                _acquireEmailMethodHelpers.SaveUnimportedVats(campaignId, invalidVats);

                var model = new AcquireEmailCheckResults
                {
                    CampaignId       = campaignId,
                    ValidEntities    = validEntities,
                    InvalidEntities  = invalidEntities,
                    ImportedEntities = importedEntities,
                    ValidVATs        = validVats,
                    InvalidVATs      = invalidVats
                };

                //if(create)
                //    System.IO.File.Delete(filepath);

                wb.Dispose();
                return(View(model));
            }
            catch (COMException come)
            {
                _helper.LogError(@"AcquireEmail - CheckEntitiesForImport", "CampaignId: " + campaignId,
                                 @"Prilikom učitavanja predmeta za obradu baza javila se greška: " + come.Message, come.InnerException.Message, string.Empty, User.Identity.Name);

                var errorModel = new ErrorModelHelper()
                {
                    ErrorTitle             = @"Greška u datoteci",
                    ErrorDescription       = @"Prilikom učitavanja predmeta za obradu baza javila se greška: " + come.Message,
                    ErrorArguments         = string.Empty,
                    ErrorException         = come,
                    ErrorSuggestedSolution = @"Molimo pokušajte učitati datoteku u .xlsx formatu!"
                };

                return(View("ErrorNew", errorModel));
            }
        }