public void UpdateTask(ModelTask mtask)
        {
            Excel.Application xlApp     = new Excel.Application();
            Excel.Workbook    workBook  = xlApp.Workbooks.Open(filePath);
            Excel.Worksheet   workSheet = workBook.Worksheets[2];
            Excel.Range       range     = workSheet.UsedRange.Columns["A", Type.Missing];
            int rowCount = range.Rows.Count;

            try
            {
                for (int i = 2; i <= rowCount; i++)
                {
                    if (workSheet.Cells[i, "B"] != null && workSheet.Cells[i, "B"].Value != null && mtask.TaskId == workSheet.Cells[i, "B"].Value.ToString())
                    {
                        MainWindow window = Application.Current.Windows.OfType <MainWindow>().FirstOrDefault();
                        workSheet.Cells[i, "A"].Value = window.txtTicket.Text.ToString();
                        workSheet.Cells[i, "B"].Value = mtask.TaskId;
                        workSheet.Cells[i, "C"].Value = mtask.TaskTitle;
                        workSheet.Cells[i, "D"].Value = mtask.TaskDescription;
                        workSheet.Cells[i, "E"].Value = mtask.TaskType;
                        workSheet.Cells[i, "F"].Value = mtask.State;
                        workSheet.Cells[i, "G"].Value = mtask.Priority;
                        workSheet.Cells[i, "H"].Value = mtask.AssignedTo;
                        workSheet.Cells[i, "I"].Value = mtask.Efforts;
                        workSheet.Cells[i, "J"].Value = mtask.PlannedStartDate;
                        workSheet.Cells[i, "K"].Value = mtask.PlannedEndDate;
                        workSheet.Cells[i, "L"].Value = mtask.ActualStartDate;
                        workSheet.Cells[i, "M"].Value = mtask.ActualEndDate;
                    }
                }
                workBook.Save();
                workBook.Close();

                xlApp.Quit();
                GC.Collect();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                workBook.Save();
                workBook.Close();
                xlApp.Quit();
                GC.Collect();
            }
        }
        public List <ModelTask> GetTaskList(string userId, bool isAdmin)
        {
            Excel.Application xlApp    = new Excel.Application();
            List <ModelTask>  taskList = new List <ModelTask>();

            Excel.Workbook  workBook     = xlApp.Workbooks.Open(filePath);
            Excel.Worksheet workSheet    = workBook.Worksheets[2];
            Excel.Worksheet workSheetEmp = workBook.Worksheets[3];
            Excel.Range     range        = workSheet.UsedRange.Columns["A", Type.Missing];
            int             rowCount     = range.Rows.Count;

            Excel.Range raEmp       = workSheetEmp.UsedRange.Columns["A", Type.Missing];
            int         rowCountemp = raEmp.Rows.Count;

            try
            {
                for (int i = 2; i <= rowCount; i++)
                {
                    ModelTask tasks = new ModelTask();
                    if (workSheet.Cells[i, "A"] != null && workSheet.Cells[i, "A"].Value != null)
                    {
                        tasks.TicketNumber = workSheet.Cells[i, "A"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "B"] != null && workSheet.Cells[i, "B"].Value != null)
                    {
                        tasks.TaskId = workSheet.Cells[i, "B"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "C"] != null && workSheet.Cells[i, "C"].Value != null)
                    {
                        tasks.TaskTitle = workSheet.Cells[i, "C"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "D"] != null && workSheet.Cells[i, "D"].Value != null)
                    {
                        tasks.TaskDescription = workSheet.Cells[i, "D"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "E"] != null && workSheet.Cells[i, "E"].Value != null)
                    {
                        tasks.TaskType = workSheet.Cells[i, "E"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "F"] != null && workSheet.Cells[i, "F"].Value != null)
                    {
                        tasks.State = workSheet.Cells[i, "F"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "G"] != null && workSheet.Cells[i, "G"].Value != null)
                    {
                        tasks.Priority = workSheet.Cells[i, "G"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "H"] != null && workSheet.Cells[i, "H"].Value != null)
                    {
                        for (int j = 2; j <= rowCountemp; j++)
                        {
                            if (workSheetEmp.Cells[j, "B"] != null && workSheetEmp.Cells[j, "B"].Value != null)
                            {
                                if (workSheetEmp.Cells[j, "B"].Value.ToString() == workSheet.Cells[i, "H"].Value.ToString())
                                {
                                    tasks.AssignedTo = workSheetEmp.Cells[j, "A"].Value.ToString();
                                }
                            }
                        }
                    }
                    if (workSheet.Cells[i, "I"] != null && workSheet.Cells[i, "I"].Value != null)
                    {
                        tasks.Efforts = workSheet.Cells[i, "I"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "J"] != null && workSheet.Cells[i, "J"].Value != null)
                    {
                        tasks.PlannedStartDate = workSheet.Cells[i, "J"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "K"] != null && workSheet.Cells[i, "K"].Value != null)
                    {
                        tasks.PlannedEndDate = workSheet.Cells[i, "K"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "L"] != null && workSheet.Cells[i, "L"].Value != null)
                    {
                        tasks.ActualStartDate = workSheet.Cells[i, "L"].Value.ToString();
                    }
                    if (workSheet.Cells[i, "M"] != null && workSheet.Cells[i, "M"].Value != null)
                    {
                        tasks.ActualEndDate = workSheet.Cells[i, "M"].Value.ToString();
                    }
                    taskList.Add(tasks);
                }
                workBook.Close();
                xlApp.Quit();
                GC.Collect();
                return(taskList);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return(null);
        }
        //Method to update an existing task
        public void UpdateTaskData(object sender, RoutedEventArgs e)
        {
            try
            {
                if (dropdownState.SelectedItem.ToString() == "COMPLETED")
                {
                    if (string.IsNullOrWhiteSpace(txtASD.Text) && string.IsNullOrWhiteSpace(txtAED.Text))
                    {
                        MessageBox.Show("Please enter Actual Start and End dates");
                    }
                    else
                    {
                        ModelTask model = new ModelTask();
                        model.TicketNumber    = txtTicket.Text.ToString();
                        model.TaskId          = txtTaskId.Text.ToString();
                        model.TaskTitle       = txtTaskTitle.Text.ToString();
                        model.TaskDescription = txtTaskDesc.Text.ToString();
                        model.TaskType        = dropdownTaskType.SelectedItem.ToString();
                        model.State           = dropdownState.SelectedItem.ToString();
                        model.Priority        = dropdownPriority.SelectedItem.ToString();
                        model.AssignedTo      = id;
                        model.Efforts         = txtEfforts.Text.ToString();
                        if (txtPED.Text.ToString() != "dd/mm/yyyy" && txtPSD.Text.ToString() != "dd/mm/yyyy")
                        {
                            model.PlannedStartDate = txtPSD.Text.ToString();
                            model.PlannedEndDate   = txtPED.Text.ToString();
                        }
                        if (txtASD.Text.ToString() != "dd/mm/yyyy" && txtAED.Text.ToString() != "dd/mm/yyyy")
                        {
                            model.ActualStartDate = txtASD.Text.ToString();
                            model.ActualEndDate   = txtAED.Text.ToString();
                            helpers.UpdateTask(model);
                            MessageBox.Show("Details Updated Successfully");
                            txtTicket.Text    = "";
                            txtTaskId.Text    = "";
                            txtTaskTitle.Text = "";
                            txtTaskDesc.Text  = "";
                            txtEfforts.Text   = "";
                            txtPSD.Text       = "";
                            txtPED.Text       = "";
                            txtASD.Text       = "";
                            txtAED.Text       = "";
                            Reload();
                        }
                        else
                        {
                            MessageBox.Show("Please enter Actual Start and End Dates");
                        }
                    }
                }
                else
                {
                    ModelTask model = new ModelTask();
                    model.TicketNumber     = txtTicket.Text.ToString();
                    model.TaskId           = txtTaskId.Text.ToString();
                    model.TaskTitle        = txtTaskTitle.Text.ToString();
                    model.TaskDescription  = txtTaskDesc.Text.ToString();
                    model.TaskType         = dropdownTaskType.SelectedItem.ToString();
                    model.State            = dropdownState.SelectedItem.ToString();
                    model.Priority         = dropdownPriority.SelectedItem.ToString();
                    model.AssignedTo       = id;
                    model.Efforts          = txtEfforts.Text.ToString();
                    model.PlannedStartDate = txtPSD.Text.ToString();
                    model.PlannedEndDate   = txtPED.Text.ToString();
                    if (txtASD.Text.ToString() != "dd/mm/yyyy" && txtAED.Text.ToString() != "dd/mm/yyyy")
                    {
                        model.ActualStartDate = txtASD.Text.ToString();
                        model.ActualEndDate   = txtAED.Text.ToString();
                    }
                    else
                    {
                        model.ActualStartDate = "";
                        model.ActualEndDate   = "";
                    }
                    helpers.UpdateTask(model);
                    MessageBox.Show("Details Updated Successfully");
                    txtTicket.Text    = "";
                    txtTaskId.Text    = "";
                    txtTaskTitle.Text = "";
                    txtTaskDesc.Text  = "";

                    txtEfforts.Text = "";
                    txtPSD.Text     = "";
                    txtPED.Text     = "";
                    txtASD.Text     = "";
                    txtAED.Text     = "";
                    Reload();
                }
            }
            catch
            {
                MessageBox.Show("Something went wrong");
            }
        }