private void dgvIssues_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { int index = dgvIssues.CurrentRow.Index; Guid serviceIssueId = new Guid(dgvIssues.Rows[index].Cells["ServiceIssueId"].Value.ToString()); ServiceIssue serviceIssue = new ServiceIssue(serviceIssueId); frmServiceIssue frmServiceIssue = new frmServiceIssue(frmMain_Parent, serviceIssue); frmServiceIssue.FormClosed += frmServiceIssue_FormClosed; }
// GET: Issue public ActionResult Planing(DateTime?month) { if (!month.HasValue) { return(RedirectToAction("Planing", new { month = $"{DateTime.Now:yyyy-MM-dd}" })); } ViewBag.IssueCityList = ServiceIssue.GetPlaningCityList(month.Value); return(View()); }
public frmServiceIssue(frmMain mf, ServiceIssue serviceIssue, FormClosedEventHandler Close = null) { frmSplashScreen ss = new frmSplashScreen(); ss.Show(); Application.DoEvents(); InitializeComponent(); frmMain_Parent = mf; this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size; Application.AddMessageFilter(this); controlsToMove.Add(this.pnlSummaryTabHeader); controlsToMove.Add(this.panel16); controlsToMove.Add(this.label1); controlsToMove.Add(this.label23); FormClosed += Close; PreloadCbos(); CurrentServiceIssue = serviceIssue; CurrentServiceIssue.AsOfDate = DateTime.Now; if (CurrentServiceIssue.PlanRecordKeeperProductId != null) { PlanRecordKeeperProduct planRecordKeeperProduct = new PlanRecordKeeperProduct((Guid)CurrentServiceIssue.PlanRecordKeeperProductId); Product product = new Product((Guid)planRecordKeeperProduct.ProductId); cboRecordKeeperProduct.Text = product.Name; } if (CurrentServiceIssue.AuditorId != null) { cboAuditor.Text = new DataIntegrationHub.Business.Entities.Auditor((Guid)CurrentServiceIssue.AuditorId).Name; } if (CurrentServiceIssue.PlanId != null) { cboPlan.Text = new Plan((Guid)CurrentServiceIssue.PlanId).Name; } txtSubject.Text = CurrentServiceIssue.SubjectValue; txtAsOfDate.Text = CurrentServiceIssue.AsOfDate.ToString("MM/dd/yyyy"); txtDescription.Text = CurrentServiceIssue.DescriptionValue; CurrentTabLabel = label46; // Summary tab label highlightSelectedTabLabel(CurrentTabLabel); ss.Close(); this.Show(); }
public ActionResult Planing() { //if (!month.HasValue) return RedirectToAction("Planing", new { month = $"{DateTime.Now:yyyy-MM}" }); DateTime month = Request.Form["month"] != null?DateTime.Parse(Request.Form["month"]) : DateTime.Now; string serviceEngeneerSid = Request.Form["engeneersSelect"] ?? String.Empty; TempData["serviceEngeneerSid"] = serviceEngeneerSid; ViewBag.IssueCityList = ServiceIssue.GetPlaningCityList(month, serviceEngeneerSid); //return RedirectToAction("Planing", new {month = month, serviceEngeneerSid = serviceEngeneerSid}); return(View()); }
public JsonResult GetClientList(DateTime?month, int?idCity, string address) { if (!idCity.HasValue) { return(Json(new { })); } if (!month.HasValue) { month = DateTime.Now; } var list = ServiceIssue.GetPlaningClientList(month.Value, idCity.Value, address); return(Json(list)); }
private void btnDeleteIssue_Click(object sender, EventArgs e) { if (dgvIssues.CurrentRow == null) { return; } int index = dgvIssues.CurrentRow.Index; Guid serviceIssueId = new Guid(dgvIssues.Rows[index].Cells[0].Value.ToString()); ServiceIssue serviceIssue = new ServiceIssue(serviceIssueId); DialogResult result = MessageBox.Show("Are you sure you wish to delete " + serviceIssue.SubjectValue + "?", "Attention", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { serviceIssue.DeleteRecordFromDatabase(); LoadDgvIssues(); } }
public Task ShowSubcriptions(ServiceIssue serviceIssue) { return(CsroDialogService.ShowMessage("List of subcription ids and names:", serviceIssue.ImpactedSubscriptions, "Close")); //return Task.CompletedTask; }
public Task <ServiceIssue> UpdateItemAsync(ServiceIssue item) { throw new NotImplementedException(); }
public Claim() { ServiceSheet4Save=new ServiceSheet(); ServiceIssue4Save=new ServiceIssue(); //Contractor=new Contractor(); //Contract = new Contract(); //Device=new Device(); //Admin=new EmployeeSm(); //Engeneer=new EmployeeSm(); }
private void LoadDgvIssues() { int currentCellRow = 0; int currentCellCol = 0; if (dgvIssues.CurrentCell != null) { currentCellRow = dgvIssues.CurrentCell.RowIndex; currentCellCol = dgvIssues.CurrentCell.ColumnIndex; } DataTable dataTable = new DataTable(); /// Set the datatable based on the SelectedIndex of <see cref="cboIssueViews"/>. switch (cboIssueViews.SelectedIndex) { case 0: dataTable = ServiceIssue.GetActive(); break; case 1: dataTable = ServiceIssue.GetInactive(); break; default: return; } if (dataTable.Rows.Count > 0) { var dt = dataTable.AsEnumerable().Where(x => x.Field <Guid?>("PlanRecordKeeperProductId") == CurrentPlanRecordKeeperProduct.Id); if (dt.Any()) { dataTable = dt.CopyToDataTable(); } else { dataTable.Rows.Clear(); } } // Add plan name column and fill data dataTable.Columns.Add("Plan"); foreach (DataRow dr in dataTable.Rows) { string planIdString = dr["PlanId"].ToString(); if (String.IsNullOrWhiteSpace(planIdString) == false) { Guid planId = new Guid(planIdString); Plan plan = new Plan(planId); dr["Plan"] = plan.Name; } } dgvIssues.DataSource = dataTable; // Display/order the columns. dgvIssues.Columns["ServiceIssueId"].Visible = false; dgvIssues.Columns["PlanId"].Visible = false; dgvIssues.Columns["RecordKeeperId"].Visible = false; dgvIssues.Columns["AuditorId"].Visible = false; dgvIssues.Columns["DescriptionValue"].Visible = false; dgvIssues.Columns["CreatedBy"].Visible = false; dgvIssues.Columns["ModifiedBy"].Visible = false; dgvIssues.Columns["StateCode"].Visible = false; dgvIssues.Columns["SubjectValue"].DisplayIndex = 0; dgvIssues.Columns["Plan"].DisplayIndex = 1; dgvIssues.Columns["AsOfDate"].DisplayIndex = 2; dgvIssues.Columns["ModifiedOn"].DisplayIndex = 3; if (dgvIssues.RowCount > 0 && dgvIssues.ColumnCount > 0) { DataGridViewCell selectedCell = dgvIssues.Rows[currentCellRow].Cells[currentCellCol]; if (selectedCell != null && selectedCell.Visible) { dgvIssues.CurrentCell = selectedCell; } else { dgvIssues.CurrentCell = dgvIssues.FirstDisplayedCell; } } }
public async Task <RefundSupportTicket> CreateSupportTicket(ServiceIssue serviceIssue, string subId, List <string> trackingIds) { RefundSupportTicket result = new(); try { #if DEBUG _logger.LogInformation($"{nameof(CreateSupportTicket)} started."); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); #endif var apiToken = await base.ApiIdentity.GetAccessTokenForUserAsync(Scope); var cr = new Microsoft.Rest.TokenCredentials(apiToken); var msClient = new MicrosoftSupportClient(cr, HttpClientBase, true); //test msClient.SubscriptionId = _testSubId; // can be only on sub var defTicket = await msClient.SupportTickets.GetAsync(_testSupportTicketId); var subIds = serviceIssue.ImpactedSubscriptions.GetSubcriptionIdsFromTextExt(); if (subIds.IsNullOrEmptyCollection()) { return(null); //error } StringBuilder sbTrIds = new(); trackingIds.ForEach(s => sbTrIds.Append($"{s}, ")); try { result = new(); result.RequiredAction = serviceIssue.TrackingId; result.SubmitedSubscription = subId; result.ServiceIssueId = serviceIssue.Id; result.TrackingId = serviceIssue.TrackingId; var userEmail = await ApiIdentity.GetCurrentUserEmail(); if (userEmail.HasValueExt() && userEmail != defTicket.ContactDetails.PrimaryEmailAddress) { defTicket.ContactDetails.AdditionalEmailAddresses = new List <string> { userEmail } } ; StringBuilder sb = new StringBuilder(DESCRIPTION_SINGLE_CONTS); sb.Replace("1VWB-V9G", sbTrIds.ToString()); var desc = sb.ToString(); SupportTicketDetails supportTicketDetails = new SupportTicketDetails(desc, defTicket.ProblemClassificationId, "minimal" , defTicket.ContactDetails, $"Refund for {nameof(serviceIssue.TrackingId)}#{serviceIssue.TrackingId}", defTicket.ServiceId); supportTicketDetails.ProblemStartTime = serviceIssue.ImpactStartTime; supportTicketDetails.Validate(); msClient.SubscriptionId = subId; //return result; //only for test, to feed db with existing ticket /*var supTicksCreated = await msClient.SupportTickets.CreateAsync(serviceIssue.TrackingId, supportTicketDetails)*/; var supTicksCreated = await msClient.SupportTickets.CreateAsync(serviceIssue.TrackingId, supportTicketDetails); if (supTicksCreated != null) { result.SupportTicketId = supTicksCreated.SupportTicketId; result.Description = supTicksCreated.Description; result.Title = supTicksCreated.Title; result.ServiceIssue = serviceIssue; } } catch (Exception ex) { //_logger.LogWarning($"{nameof(CreateSupportTicket)} failed for {serviceIssue.TrackingId} and sub {subId} with: {ex}"); throw; } #if DEBUG stopWatch.Stop(); _logger.LogInformation($"{nameof(CreateSupportTicket)} took {stopWatch.Elapsed}"); #endif return(result.SupportTicketId.HasValueExt() ? result : null); } catch (Exception ex) { throw; } }
public async Task <RefundSupportTicket> CreateSupportTicket(ServiceIssue serviceIssue) { RefundSupportTicket result = new(); try { #if DEBUG _logger.LogInformation($"{nameof(CreateSupportTicket)} started."); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); #endif var apiToken = await base.ApiIdentity.GetAccessTokenForUserAsync(Scope); var cr = new Microsoft.Rest.TokenCredentials(apiToken); var msClient = new MicrosoftSupportClient(cr, HttpClientBase, true); //test msClient.SubscriptionId = _testSubId; // can be only on sub var defTicket = await msClient.SupportTickets.GetAsync(_testSupportTicketId); //var coms = await msClient.Communications.ListAsync(SupportTicketId); var subIds = serviceIssue.ImpactedSubscriptions.GetSubcriptionIdsFromTextExt(); if (subIds.IsNullOrEmptyCollection()) { return(null); //error } foreach (var subId in subIds) { try { result = new(); result.RequiredAction = null; result.SubmitedSubscription = subId; result.ServiceIssueId = serviceIssue.Id; result.TrackingId = serviceIssue.TrackingId; var userEmail = await ApiIdentity.GetCurrentUserEmail(); if (userEmail.HasValueExt() && userEmail != defTicket.ContactDetails.PrimaryEmailAddress) { defTicket.ContactDetails.AdditionalEmailAddresses = new List <string> { userEmail } } ; StringBuilder sb = new StringBuilder(DESCRIPTION_CONTS); sb.Replace("Tue, 21 Sep 2021, 12:00 am GMT+2", serviceIssue.ImpactStartTime.ToString("R")); sb.Replace("ImpactMitigationTime", serviceIssue.ImpactMitigationTime.ToString("R")); sb.Replace("LastUpdateTime", serviceIssue.LastUpdateTime.ToString("R")); sb.Replace("TitlePlaceholder", serviceIssue.Title); sb.Replace("1VWB-V9G", serviceIssue.TrackingId); sb.Replace("ImpactedRegions", serviceIssue.ImpactedRegions); sb.Replace("ImpactedServices", serviceIssue.ImpactedServices); sb.Replace("Status", serviceIssue.Status); #region ImpactedSubscriptions, pupulate with entire list, with ids only or split and store to RequiredAction StringBuilder sbSubs = new(); var subPairs = serviceIssue.ImpactedSubscriptions.Split(",").ToList(); if (subPairs.Count > 1) { sbSubs.AppendLine(); //if more then 1, place subs into new line } subPairs.Where(a => a.Length > 1).ToList().ForEach(a => sbSubs.AppendLine(a.TrimStart().TrimEnd())); var desLenght = sb.Length + sbSubs.Length; const int max = 5000; if (desLenght < max) //limit for des is 5000 char { sb.Replace(nameof(serviceIssue.ImpactedSubscriptions), sbSubs.ToString()); } else { //try with ids only, ignore sub names sbSubs.Clear(); subIds.ForEach(a => sbSubs.AppendLine(a)); desLenght = sb.Length + sbSubs.Length; if (desLenght < max) //limit for des { sb.Replace(nameof(serviceIssue.ImpactedSubscriptions), sbSubs.ToString()); } else { //real problem. Save into db filed RequiredAction sbSubs.Clear(); StringBuilder sbRequiredAction = new("[Action]Additional subscriptions not included in tickets to be reported, because of 5000 limit for description in api:"); subPairs = serviceIssue.ImpactedSubscriptions.Split(",").ToList(); foreach (var item in subPairs) { if (item.Length > 1) { desLenght = sb.Length + sbSubs.Length + 400; //some offset if (desLenght < max) //limit for des is 5000 char { sbSubs.AppendLine(item.TrimStart().TrimEnd()); } else { sbRequiredAction.AppendLine(item.TrimStart().TrimEnd()); } } } sb.Replace(nameof(serviceIssue.ImpactedSubscriptions), sbSubs.ToString()); result.RequiredAction = sbRequiredAction.ToString(); } } #endregion var desc = sb.ToString(); SupportTicketDetails supportTicketDetails = new SupportTicketDetails(desc, defTicket.ProblemClassificationId, "minimal" , defTicket.ContactDetails, $"Refund for {nameof(serviceIssue.TrackingId)}#{serviceIssue.TrackingId}", defTicket.ServiceId); supportTicketDetails.ProblemStartTime = serviceIssue.ImpactStartTime; supportTicketDetails.Validate(); msClient.SubscriptionId = subId; //return result; //only for test, to feed db with existing ticket var supTicksCreated = await msClient.SupportTickets.CreateAsync(serviceIssue.TrackingId, supportTicketDetails); if (supTicksCreated != null) { result.SupportTicketId = supTicksCreated.SupportTicketId; result.Description = supTicksCreated.Description; result.Title = supTicksCreated.Title; //result.CreatedBy = userEmail; ////overide created time with ticket time //refund.CreatedAt = supTicksCreated.CreatedDate; result.ServiceIssue = serviceIssue; break; } } catch (Exception ex) { //_logger.LogWarning($"{nameof(CreateSupportTicket)} failed for {serviceIssue.TrackingId} and sub {subId} with: {ex}"); throw; } } #if DEBUG stopWatch.Stop(); _logger.LogInformation($"{nameof(CreateSupportTicket)} took {stopWatch.Elapsed}"); #endif return(result.SupportTicketId.HasValueExt() ? result : null); } catch (Exception ex) { throw; } }
private void LoadDgvIssues() { DataTable dataTable = new DataTable(); /// Set the datatable based on the SelectedIndex of <see cref="cboIssueViews"/>. switch (cboIssueViews.SelectedIndex) { case 0: dataTable = ServiceIssue.GetActive(); break; case 1: dataTable = ServiceIssue.GetInactive(); break; default: return; } if (dataTable.Rows.Count > 0) { var dt = dataTable.AsEnumerable().Where(x => x.Field <Guid?>("PlanId") == CurrentPlan.PlanId); if (dt.Any()) { dataTable = dt.CopyToDataTable(); } else { dataTable.Rows.Clear(); } } // Add plan name column and fill data dataTable.Columns.Add("RecordKeeper"); foreach (DataRow dr in dataTable.Rows) { string recordKeeperIdString = dr["RecordKeeperId"].ToString(); if (String.IsNullOrWhiteSpace(recordKeeperIdString) == false) { Guid recordKeeperId = new Guid(recordKeeperIdString); DataIntegrationHub.Business.Entities.RecordKeeper recordKeeper = new DataIntegrationHub.Business.Entities.RecordKeeper(recordKeeperId); dr["RecordKeeper"] = recordKeeper.Name; } } dgvIssues.DataSource = dataTable; // Display/order the columns. dgvIssues.Columns["ServiceIssueId"].Visible = false; dgvIssues.Columns["PlanId"].Visible = false; dgvIssues.Columns["RecordKeeperId"].Visible = false; dgvIssues.Columns["AuditorId"].Visible = false; dgvIssues.Columns["DescriptionValue"].Visible = false; dgvIssues.Columns["CreatedBy"].Visible = false; dgvIssues.Columns["ModifiedBy"].Visible = false; dgvIssues.Columns["StateCode"].Visible = false; dgvIssues.Columns["SubjectValue"].DisplayIndex = 0; dgvIssues.Columns["RecordKeeper"].DisplayIndex = 1; dgvIssues.Columns["AsOfDate"].DisplayIndex = 2; dgvIssues.Columns["ModifiedOn"].DisplayIndex = 3; }