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())); }
/// <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())); }
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)); } }
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)); } }
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)); } }
// 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)); } }
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)); } }
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)); } }