public async Task <IActionResult> Edit(Guid id, [Bind("From,To,ID,CreatedDateUtc,IsActive,Name,Description")] LeadActivity leadActivity)
        {
            if (id != leadActivity.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(leadActivity);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!LeadActivityExists(leadActivity.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(leadActivity));
        }
        public async Task <IActionResult> Create([Bind("From,To,ID,CreatedDateUtc,IsActive,Name,Description")] LeadActivity leadActivity, Guid?ID)
        {
            if (ModelState.IsValid)
            {
                var  masterid = ID;
                Lead lead     = await _context.Lead.Where(x => x.ID.Equals(masterid)).FirstOrDefaultAsync();

                leadActivity.ID   = Guid.NewGuid();
                leadActivity.Lead = lead;
                _context.Add(leadActivity);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Edit", "Leads", new { ID = masterid }));
            }
            return(View(leadActivity));
        }
 public bool IsInDB(LeadActivity leadActivity)
 {
     return
         (_context.LeadActivities.Any(la => la.ActivityDate == leadActivity.ActivityDate));
 }
 public void AddLeadActivity(LeadActivity leadActivity)
 {
     _context.LeadActivities.Add(leadActivity);
 }
Beispiel #5
0
        public bool RetreiveData(string exportJobId)
        {
            var result = marketoAPIHelper.RetreiveDataRequest(exportJobId);

            try
            {
                var dict = JsonConvert.DeserializeObject <Dictionary <string, string> >(result);
                if (!bool.Parse(dict["success"]))
                {
                    var errorRes = JsonConvert.DeserializeObject <RequestResultError>(result);
                    ErrorHandling("Get Job Status", errorRes);

                    return(false);
                }
            }
            catch (Exception)
            {
            }

            var resultList = result.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();

            var leadIdList         = new List <int>();
            var leadActivitiesList = new List <LeadActivity>();

            foreach (var line in resultList)
            {
                var data     = line.Split(',');
                var isParsed = int.TryParse(data[0], out var leadId);
                if (!isParsed)
                {
                    continue;
                }

                DateTime.TryParse(data[1], out var activityDate);
                int.TryParse(data[2], out var activityId);
                var attributesList = new List <string>();
                for (int i = 3; i < data.Length; i++)
                {
                    attributesList.Add(data[i]);
                }
                string attributes = string.Join(",", attributesList);

                if (!leadIdList.Any(li => li == leadId))
                {
                    leadIdList.Add(leadId);
                }

                var leadActivity = new LeadActivity()
                {
                    LeadId       = leadId,
                    ActivityDate = activityDate,
                    ActivityId   = activityId,
                    Attributes   = attributes
                };

                if (!_unitOfWork.LeadActivities.IsInDB(leadActivity))
                {
                    leadActivitiesList.Add(leadActivity);
                }
            }
            PullMissingLeads(leadIdList);
            foreach (var leadActivity in leadActivitiesList)
            {
                int activityDBId = 0;
                int leadDbId     = 0;

                activityDBId = _unitOfWork.Activities.GetId(leadActivity.ActivityId);

                leadDbId = _unitOfWork.Leads.GetId(leadActivity.LeadId);

                leadActivity.LeadId     = leadDbId;
                leadActivity.ActivityId = activityDBId;
                _unitOfWork.LeadActivities.AddLeadActivity(leadActivity);
            }

            _unitOfWork.Complete();
            return(true);
        }
        public ViewResult Activities(string startDate, string endDate, int?page)
        {
            DateTime start = DateTime.MinValue;
            DateTime end   = DateTime.MinValue;

            page = page ?? 1;
            ViewBag.StartDate = startDate;
            ViewBag.EndDate   = endDate;

            start = DateTime.Parse(ViewBag.StartDate);
            end   = DateTime.Parse(ViewBag.EndDate);


            var dataList            = new List <ActivityViewModel>();
            var leadsActivitiesList = new List <LeadActivity>();

            leadsActivitiesList = _unitOfWork.LeadActivities.GetLeadActivities(start, end);

            if (LeadActivity.ToBeUpdated(start, end, leadsActivitiesList))
            {
                var requestCount = 0;
                //var jobStatusRequestCount = 0;
                if (HttpContext.ApplicationInstance.Application["CreateExportRequestCount"] != null)
                {
                    requestCount = (int)HttpContext.ApplicationInstance.Application["CreateExportRequestCount"];
                }
                else
                {
                    HttpContext.ApplicationInstance.Application["CreateExportRequestCount"] = requestCount;
                }

                //if (HttpContext.ApplicationInstance.Application["JobStatusRequestCount"] != null)
                //    jobStatusRequestCount = (int)HttpContext.ApplicationInstance.Application["JobStatusRequestCount"];
                //else
                //    HttpContext.ApplicationInstance.Application["JobStatusRequestCount"] = jobStatusRequestCount;

                while (requestCount >= 2)
                {
                    Thread.Sleep(60000);
                    requestCount = (int)HttpContext.ApplicationInstance.Application["CreateExportRequestCount"];
                }

                var exportJobId = _marketoHelper.CreateExportJob(start, end);

                requestCount++;
                HttpContext.ApplicationInstance.Application["CreateExportRequestCount"] = requestCount;

                _marketoHelper.QueueJob(exportJobId);

                string jobStatus = "";
                Status?jobStatusEnum;
                jobStatus     = _unitOfWork.ExportJobs.GetJobStatus(exportJobId);
                jobStatusEnum = (Status)Enum.Parse(typeof(Status), jobStatus, true);

                while (jobStatusEnum != Status.Completed && jobStatusEnum != Status.Failed)
                {
                    //while (jobStatusRequestCount >= 20)
                    //{
                    //    Thread.Sleep(2000);
                    //    jobStatusRequestCount = (int)HttpContext.ApplicationInstance.Application["JobStatusRequestCount"];
                    //}

                    jobStatusEnum = _marketoHelper.GetJobStatus(exportJobId);
                    Thread.Sleep(2000);
                }

                requestCount--;
                HttpContext.ApplicationInstance.Application["CreateExportRequestCount"] = requestCount;

                _marketoHelper.RetreiveData(exportJobId);
            }


            var leadActivities = _unitOfWork.LeadActivities.GetLeadActivitiesWithIncludes(start, end);

            foreach (var leadActivity in leadActivities)
            {
                var activityType      = _unitOfWork.Activities.GetActivity(leadActivity.ActivityId);
                var activityViewModel = new ActivityViewModel()
                {
                    LeadId       = leadActivity.Lead.LeadId.ToString(),
                    ActivityType = activityType,
                    ActivityDate = leadActivity.ActivityDate.ToString(),
                    CampaignId   = leadActivity.Lead.CampaignId,
                    SFDCId       = leadActivity.Lead.SFDCId,
                    Attributes   = leadActivity.Attributes
                };
                dataList.Add(activityViewModel);
            }

            int pageSize   = 10;
            int pageNumber = (page ?? 1);

            return(View(dataList.ToPagedList(pageNumber, pageSize)));
        }