public LoginPage()
 {
     InitializeComponent();
     ds     = new DataService();
     keeper = new UsersKeeper();
 }
        private void btnJdeScanExport_Click(object sender, RibbonControlEventArgs e)
        {
            UsersKeeper      uKeeper          = new UsersKeeper();
            PlaceKeeper      pKeeper          = new PlaceKeeper();
            ActionKeeper     aKeeper          = new ActionKeeper();
            ActionTypeKeeper atKeeper         = new ActionTypeKeeper();
            ActionType       ChosenActionType = null;

            mPlaces.Clear();
            aPlaces.Clear();
            mUsers.Clear();
            aUsers.Clear();

            Workbook  wb        = Globals.ThisAddIn.Application.ActiveWorkbook;
            Worksheet sht       = wb.ActiveSheet;
            Range     UsedRange = sht.UsedRange;

            bool found   = false;
            int  cUser   = 0;
            int  cTime   = 0;
            int  cAction = 0;
            int  cPlace  = 0;
            int  cType   = 0;

            try
            {
                for (int i = 1; i <= UsedRange.Columns.Count; i++)
                {
                    if (cUser == 0 || cTime == 0 || cAction == 0 || cPlace == 0 || cType == 0)
                    {
                        try
                        {
                            string aCell = ((Range)UsedRange.Cells[1, i]).Value;

                            if (aCell == "Nazwa maszyny")
                            {
                                cPlace = i;
                            }
                            else if (aCell == "Czynność")
                            {
                                cAction = i;
                            }
                            else if (aCell == "S/R")
                            {
                                cType = i;
                            }
                            else if (aCell == "czas")
                            {
                                cTime = i;
                            }
                            else if (aCell == "Nazwisko")
                            {
                                cUser = i;
                            }
                        }
                        catch (Exception ex)
                        {
                        }
                        if (cUser != 0 && cTime != 0 && cAction != 0 && cPlace != 0 & cType != 0)
                        {
                            found = true;
                            break;
                        }
                    }
                }

                if (!found)
                {
                    //Not all variables have been found
                    MessageBox.Show("Nie udało się znaleźć wszystkich potrzebnych kolumn (Nazwa maszyny, Czynność, S/R, czas, Nazwisko). Upewnij się, że raport zawiera wszystkie kolumny z nagłówkami w pierwszym wierszu." + Environment.NewLine + Environment.NewLine + "Jeśli zaznaczyłeś dane do eksportu, upewnij się, że nazwy kolumn są w pierwszym wierszu zaznaczenia.");
                }
                else
                {
                    uKeeper.Reload();
                    aKeeper.Reload();
                    pKeeper.Reload();
                    atKeeper.Reload();

                    frmActionTypes frmActionTypes = new frmActionTypes(atKeeper);
                    DialogResult   result         = frmActionTypes.ShowDialog();
                    if (result == DialogResult.OK)
                    {
                        ChosenActionType = frmActionTypes.chosen;
                    }

                    if (ChosenActionType != null)
                    {
                        RecordKeeper rKeeper = new RecordKeeper(ChosenActionType);
                        foreach (Range Row in UsedRange.Rows)
                        {
                            if (!Row.Hidden)
                            {
                                //ignore hidden rows
                                Record record = new Record();
                                record.RowNumber  = Row.Row;
                                record.ActionType = ChosenActionType;
                                //get Users
                                string names = null;
                                if (((Range)UsedRange[Row.Row, cUser]).Value2 != null)
                                {
                                    names = ((Range)UsedRange[Row.Row, cUser]).Value;
                                }
                                string act = null;
                                if (((Range)UsedRange[Row.Row, cAction]).Value2 != null)
                                {
                                    act = ((Range)UsedRange[Row.Row, cAction]).Value.ToString().Trim();
                                }
                                string pl = null;
                                if (((Range)UsedRange[Row.Row, cPlace]).Value2 != null)
                                {
                                    pl = ((Range)UsedRange[Row.Row, cPlace]).Value.ToString().Trim();
                                }
                                if (names != "Nazwisko" && !string.IsNullOrEmpty(act) && act != "Czynność" && !string.IsNullOrEmpty(pl) && pl != "Nazwa maszyny")
                                {
                                    //Don't do anything if the row doesn't contain Place and action
                                    //They are indispensable

                                    if (!string.IsNullOrEmpty(names))
                                    {
                                        var nms = Regex.Split(names, ",");
                                        if (nms.Count() == 1)
                                        {
                                            //Only 1 user? Or maybe those bustards are divided with "/" ?!
                                            nms = Regex.Split(names, "/");
                                            if (nms.Count() == 1)
                                            {
                                                //Only 1 user? maybe backslash ("\") ?!
                                                if (names.Contains(@"\"))
                                                {
                                                    nms = names.Split('\\');
                                                }
                                            }
                                        }
                                        record.UsersAssigned = nms.Count();
                                        foreach (string n in nms)
                                        {
                                            if (uKeeper.Items.Where(i => i.FullName == n.Trim()).Any())
                                            {
                                                if (uKeeper.Items.Where(i => i.FullName == n.Trim() && i.IsArchived == true).Any() && !uKeeper.Items.Where(i => i.FullName == n.Trim() && i.IsArchived != true).Any())
                                                {
                                                    //check if there is archived user like that but also check if there is active user like this
                                                    //add it to archived list
                                                    aUsers.Add(n.Trim());
                                                }
                                                else
                                                {
                                                    //Keep User with id in record object
                                                    record.Users.Add(new User {
                                                        UserId = uKeeper.Items.Where(i => i.FullName == n.Trim() && i.IsArchived != true).FirstOrDefault().UserId, FullName = n.Trim()
                                                    });
                                                }
                                            }
                                            else
                                            {
                                                if (!mUsers.Where(i => i == n.Trim()).Any())
                                                {
                                                    //add it to missing list
                                                    mUsers.Add(n.Trim());
                                                }
                                            }
                                        }
                                    }

                                    if (pKeeper.Items.Where(i => i.Name.Trim() == pl).Any())
                                    {
                                        //Keep place with id in record object
                                        if (pKeeper.Items.Where(i => i.Name.Trim() == pl && i.IsArchived == true).Any() && !pKeeper.Items.Where(i => i.Name.Trim() == pl && i.IsArchived != true).Any())
                                        {
                                            //check if there is archived place like that but also check if there is active place like this
                                            //add it to archived list
                                            aPlaces.Add(pl);
                                        }
                                        else
                                        {
                                            record.Place = pKeeper.Items.Where(i => i.Name.Trim() == pl && i.IsArchived != true).FirstOrDefault();
                                        }
                                    }
                                    else
                                    {
                                        if (!mPlaces.Where(i => i == pl).Any())
                                        {
                                            //add it to missing list
                                            mPlaces.Add(pl);
                                        }
                                    }


                                    //get Actions
                                    Models.Action a = new Models.Action();

                                    if (!aKeeper.Items.Where(i => i.Name.Trim().Equals(act, StringComparison.OrdinalIgnoreCase)).Any())
                                    {
                                        //Go and add missing actions to db
                                        //it doesn't exist, let's add it
                                        a.Name = act;
                                        bool   passed = false;
                                        int    min    = 0;
                                        string tg     = null;
                                        try
                                        {
                                            if (((Range)UsedRange[Row.Row, cTime]).Value2 != null)
                                            {
                                                tg     = ((Range)UsedRange[Row.Row, cTime]).Value.ToString();
                                                passed = int.TryParse(tg, out min);
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                            MessageBox.Show(ex.Message);
                                        }
                                        if (passed)
                                        {
                                            a.GivenTime = min;
                                        }

                                        if (((Range)UsedRange[Row.Row, cType]).Value2 != null)
                                        {
                                            a.Type = ((Range)UsedRange[Row.Row, cType]).Value.ToString().Trim();
                                        }
                                    }
                                    else
                                    {
                                        a = aKeeper.Items.Where(i => i.Name.Trim().Equals(act, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                                    }

                                    record.Action = a;
                                    rKeeper.Items.Add(record);
                                }

                                if (!record.IsValid)
                                {
                                    // mark it
                                    Row.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
                                }
                                else
                                {
                                    Row.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Green);
                                }
                            }
                        }


                        bool IsValid = true;

                        if (rKeeper.Items.Where(r => r.IsValid == false).Any())
                        {
                            string mess = string.Empty;

                            if (rKeeper.Items.Where(r => r.IsValid == true).Any())
                            {
                                IsValid = true;
                                //if at least one record contains valid data, notify him
                                //and check if he would like to add valid records or correct it first
                                mess = "Nie wszystkie rekordy można dodać. Jeśli w wierszu nazwa maszyny (lub nazwisko pracownika) nie występuje w programie, takiego wiersza nie można dodać. Aby dodać niepoprawne wiersze (zaznaczone na czerwono), należy najpierw utworzyć odpowiednią maszynę/użytkownika w programie, lub skorygować dane w pliku.";
                            }
                            else
                            {
                                IsValid = false;
                                //no records contain valid data
                                mess = "Arkusz nie zawiera żadnego poprawnego wiersza. Jeśli w wierszu nazwa maszyny (lub nazwisko pracownika) nie występuje w programie, takiego wiersza nie można dodać. Aby dodać niepoprawne wiersze (zaznaczone na czerwono), należy najpierw utworzyć odpowiednią maszynę/użytkownika w programie, lub skorygować dane w pliku.";
                            }

                            if (mUsers.Any())
                            {
                                mess += Environment.NewLine + Environment.NewLine + "Brakujący użytkownicy: " + string.Join(", ", mUsers);
                            }
                            if (mPlaces.Any())
                            {
                                mess += Environment.NewLine + Environment.NewLine + "Brakujące maszyny: " + string.Join(", ", mPlaces);
                            }
                            if (aPlaces.Any() || aUsers.Any())
                            {
                                mess += Environment.NewLine + Environment.NewLine + "Na liście znajdują się zarchiwizowane maszyny lub użytkownicy.";
                                if (aPlaces.Any())
                                {
                                    mess += Environment.NewLine + "Zarchiwizowane maszyny: " + string.Join(", ", aPlaces.Distinct());
                                }
                                if (aUsers.Any())
                                {
                                    mess += Environment.NewLine + "Zarchiwizowani użytkownicy: " + string.Join(", ", aUsers.Distinct());
                                }
                            }

                            if (IsValid)
                            {
                                mess += Environment.NewLine + Environment.NewLine + "Chcesz importować teraz poprawne wiersze (ZIELONE)?";
                                DialogResult res = MessageBox.Show(mess, "Niepoprawne dane", MessageBoxButtons.YesNo);
                                if (res == DialogResult.Yes)
                                {
                                    IsValid = true;
                                }
                                else
                                {
                                    IsValid = false;
                                }
                            }
                            else
                            {
                                DialogResult res = MessageBox.Show(mess, "Niepoprawne dane", MessageBoxButtons.OK);
                            }
                        }

                        if (IsValid)
                        {
                            //get week number
                            frmPeriod    FrmPeriod = new frmPeriod();
                            DialogResult res       = FrmPeriod.ShowDialog();
                            if (res == DialogResult.OK)
                            {
                                //All set, let's import the m**********r
                                int w = (int)FrmPeriod.week;
                                int y = (int)FrmPeriod.year;
                                rKeeper.PlannedStart  = (DateTime)FrmPeriod.startDate;
                                rKeeper.PlannedFinish = ((DateTime)FrmPeriod.startDate).AddHours(160);
                                frmLogin     FrmLogin    = new frmLogin(uKeeper);
                                DialogResult loginResult = FrmLogin.ShowDialog();
                                if (loginResult == DialogResult.OK)
                                {
                                    Globals.ThisAddIn.Application.StatusBar = $"Importuje dane dla tygodnia {w}/{y}..";
                                    int added = rKeeper.ImportAll();
                                    Globals.ThisAddIn.Application.StatusBar = "";
                                    MessageBox.Show("Import zakończony powodzeniem!", "Powodzenie");
                                }
                                else
                                {
                                    //The user aborted the form and we don't have UserId of loagged user to upload to
                                    MessageBox.Show("Użytkownik nie został zalogowany. Akcja przerwana przez użytkownika. Żadne dane nie zostały zaimportowane..", "Import przerwany");
                                }
                            }
                            else
                            {
                                //The user aborted the form and we don't have week/year to upload to
                                MessageBox.Show("Akcja przerwana przez użytkownika. Żadne dane nie zostały zaimportowane..", "Import przerwany");
                            }
                        }
                    }
                    else
                    {
                        //The user aborted the form and we don't have UserId of loagged user to upload to
                        MessageBox.Show("Nie wybrano typu zgłoszenia. Akcja przerwana przez użytkownika. Żadne dane nie zostały zaimportowane..", "Import przerwany");
                    }
                }
            }catch (Exception ex)
            {
                MessageBox.Show($"Wystąpił błąd podczas analizowania pliku: {ex.Message}", "Import przerwany");
            }
        }
Example #3
0
 public frmLogin(UsersKeeper keeper)
 {
     InitializeComponent();
     Keeper = keeper;
 }