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;
        }
예제 #2
0
        // 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());
        }
예제 #3
0
        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());
        }
예제 #5
0
        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();
            }
        }
예제 #7
0
 public Task ShowSubcriptions(ServiceIssue serviceIssue)
 {
     return(CsroDialogService.ShowMessage("List of subcription ids and names:", serviceIssue.ImpactedSubscriptions, "Close"));
     //return Task.CompletedTask;
 }
예제 #8
0
 public Task <ServiceIssue> UpdateItemAsync(ServiceIssue item)
 {
     throw new NotImplementedException();
 }
예제 #9
0
 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;
                }
            }
        }
예제 #11
0
        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;
            }
        }
예제 #12
0
        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;
        }