Пример #1
0
        private void AddToVT(int SetID, int value, int declared, string dokDostawy, DateTime dataDostawy)
        {
            VTMagazyn vt = new VTMagazyn
            {
                NumerKompletu       = SetID,
                SztukiZeskanowane   = value,
                SztukiDeklarowane   = declared,
                Wiazka              = Input.Wiazka,
                KodCiety            = Input.KodCiety,
                Pracownik           = User.Identity.Name,
                DokDostawy          = dokDostawy,
                DataUtworzenia      = DateTime.Now,
                DataDostawy         = dataDostawy,
                Komplet             = false,
                Deklarowany         = Input.isDeclared,
                DataDopisu          = Input.DeliveryDate,
                DopisanaIlosc       = value,
                Uwagi               = Input.Uwagi,
                autocompleteEnabled = Input.isAutocompleteEnabled,
                wymuszonaIlosc      = Input.isForcedDeclared,
                Technical           = _db.Technical.IgnoreQueryFilters().FirstOrDefault(c => c.PrzewodCiety == Input.KodCiety && c.Wiazka == Input.Wiazka),
            };

            vt.Dostawy = new List <VtToDostawa>();

            _db.VTMagazyn.Add(vt);
            _db.SaveChanges();
        }
Пример #2
0
        /// <summary>
        /// Tries to add current scan as a whole
        /// </summary>
        /// <param name="response"></param>
        /// <param name="techEntry"></param>
        /// <param name="sc"></param>
        /// <param name="dostawaEntry"></param>
        /// <returns></returns>
        public bool AddOrCreateNewSet(ScannedResponse response, Technical techEntry, ScannedCode sc, Dostawa dostawaEntry)
        {
            VTMagazyn VT = ExistsInVT(sc);

            if (VT == null && !sc.addedBefore)
            {
                // If no instance of this scan exists
                AddToVT(techEntry, sc, dostawaEntry);
            }
            else if (VT == null && sc.addedBefore)
            {
                if (sc.isForcedInsert)
                {
                    // If instance of this code have been added to previous scans
                    AddToVT(techEntry, sc, dostawaEntry);
                }
                else
                {
                    response.Header = HeaderTypes.error;
                    response.Flag   = FlagType.codeExistsBack;
                    return(false);
                }
            }
            else
            {
                if (sc.isForcedInsert)
                {
                    var deliveriesForToday = _db.Dostawa.AsNoTracking().Include(c => c.Technical)
                                             .Where(c => c.Technical.Wiazka == sc.Wiazka && c.Data.Date == sc.dataDostawyOld.Date).ToList();
                    var VTList = new List <VTMagazyn>();
                    VTList.Add(VT);
                    // ?
                    // If instance of this scan have been added for todays delivery
                    if (VT.SztukiZeskanowane < GetPossibleDeclaredValue(sc, VTList, deliveriesForToday))
                    {
                        return(AddQuantityIncorrect(deliveriesForToday, response, techEntry, sc, dostawaEntry));
                    }
                    else
                    {
                        AddToVT(techEntry, sc, dostawaEntry, true);
                    }
                }
                else
                {
                    response.Header = HeaderTypes.error;
                    response.Flag   = FlagType.codeExists;
                    return(false);
                }
            }

            return(true);
        }
Пример #3
0
        /// <summary>
        /// Update relation between Dostawa and VTMagazyn when adding to already existing scan
        /// </summary>
        /// <param name="dostawaEntry"></param>
        /// <param name="vt">Scan to update</param>
        public void UpdateVT(Dostawa dostawaEntry, VTMagazyn vt)
        {
            VtToDostawa vttd = new VtToDostawa();

            vttd.DostawaId   = dostawaEntry.DostawaId;
            vttd.VTMagazynId = vt.VTMagazynId;
            vttd.VTMagazyn   = vt;
            vttd.Dostawa     = dostawaEntry;
            if (vt.Dostawy.FirstOrDefault(c => c.VTMagazynId == vttd.VTMagazynId && c.DostawaId == vttd.DostawaId) == null)
            {
                vt.Dostawy.Add(vttd);
            }
        }
Пример #4
0
        public void UpdateWiazkaOnChange(VTMagazyn record, int originalValue)
        {
            if (record.SztukiZeskanowane == 0)
            {
                if (originalValue >= record.SztukiDeklarowane)
                {
                    var toUpdate = _db.VTMagazyn.Where(c =>
                                                       c.Wiazka == record.Wiazka &&
                                                       c.NumerKompletu == record.NumerKompletu &&
                                                       c.DataDostawy.Date == record.DataDostawy.Date).ToList();
                    foreach (var rec in toUpdate)
                    {
                        rec.ZeskanowanychNaKomplet--;
                        if (rec.autocompleteEnabled)
                        {
                            rec.Komplet = false;
                        }
                    }

                    _db.UpdateRange(toUpdate);
                }
                _db.VtToDostawa.RemoveRange(_db.VtToDostawa.Where(c => c.VTMagazynId == record.VTMagazynId));
                _db.VTMagazyn.Remove(record);
            }
            else if (record.SztukiZeskanowane < record.SztukiDeklarowane && originalValue >= record.SztukiDeklarowane)
            {
                if (originalValue >= record.SztukiDeklarowane)
                {
                    var toUpdate = _db.VTMagazyn.Where(c =>
                                                       c.Wiazka == record.Wiazka &&
                                                       c.NumerKompletu == record.NumerKompletu &&
                                                       c.DataDostawy.Date == record.DataDostawy.Date).ToList();
                    foreach (var rec in toUpdate)
                    {
                        rec.ZeskanowanychNaKomplet--;
                        if (rec.autocompleteEnabled)
                        {
                            rec.Komplet = false;
                        }
                    }

                    _db.UpdateRange(toUpdate);
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Adds scan to the database
        /// </summary>
        /// <param name="technical"></param>
        /// <param name="scanned"></param>
        /// <param name="dostawa"></param>
        /// <param name="newCmplt">Does it need to create new set</param>
        public void AddToVT(Technical technical, ScannedCode scanned, Dostawa dostawa, bool newCmplt = false)
        {
            if (dostawa != null && dostawa.Uwagi != "")
            {
                scanned.complete = true;
            }

            // Set proper set ID depending which set ID is missing
            if (!newCmplt)
            {
                scanned.NumerKompletu = 0;
            }
            else
            {
                int nextKpl    = 0;
                var SetNumbers = GetCompleteID(scanned);
                foreach (var kplNumber in SetNumbers)
                {
                    if (nextKpl != kplNumber)
                    {
                        break;
                    }
                    nextKpl++;
                }

                scanned.NumerKompletu = nextKpl;
            }



            VtToDostawa vtToDostawa = new VtToDostawa();

            vtToDostawa.Dostawa = dostawa;

            VTMagazyn vt = new VTMagazyn
            {
                NumerKompletu       = scanned.NumerKompletu,
                SztukiZeskanowane   = scanned.sztukiSkanowane,
                SztukiDeklarowane   = 0,
                Wiazka              = technical.Wiazka,
                KodCiety            = technical.PrzewodCiety,
                Pracownik           = scanned.User,
                DokDostawy          = scanned.DokDostawy,
                DataUtworzenia      = scanned.dataUtworzenia,
                DataDostawy         = scanned.dataDostawyOld == DateTime.MinValue ? scanned.dataDostawy : scanned.dataDostawyOld,
                Komplet             = scanned.complete,
                Deklarowany         = scanned.Declared,
                DataDopisu          = scanned.DataDopisu,
                DostawaDopis        = scanned.DostawaDopis,
                DopisanaIlosc       = scanned.DopisanaIlosc,
                Uwagi               = scanned.Uwagi,
                autocompleteEnabled = true,
                wymuszonaIlosc      = false,
                Technical           = technical
            };

            vtToDostawa.VTMagazyn = vt;

            // Create a relation between Dostawa and VTMagazyn scan
            vt.Dostawy = new List <VtToDostawa>();
            if (dostawa != null)
            {
                vt.Dostawy.Add(vtToDostawa);
            }

            _db.VTMagazyn.Add(vt);
        }
Пример #6
0
        public async Task <IActionResult> OnPostLoadVTMagazynAsync()
        {
            int    chunkSize = 20000;
            string backupDir = $"./Snapshots/{Date.Day}{Date.Month}{Date.Year}";

            if (!Directory.Exists("./Snapshots"))
            {
                return(Page());
            }

            if (!Directory.Exists(backupDir))
            {
                return(Page());
            }


            if (System.IO.File.Exists(backupDir + "/VTMagazyn.csv"))
            {
                using (var reader = new StreamReader(backupDir + "/VTMagazyn.csv"))
                    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
                    {
                        _db.RemoveRange(_db.VTMagazyn);
                        int i = 0;
                        await csv.ReadAsync();

                        csv.ReadHeader();
                        while (await csv.ReadAsync())
                        {
                            var record = new VTMagazyn
                            {
                                VTMagazynId            = csv.GetField <Guid>("VTMagazynId"),
                                NumerKompletu          = csv.GetField <int>("NumerKompletu"),
                                SztukiDeklarowane      = csv.GetField <int>("SztukiDeklarowane"),
                                SztukiZeskanowane      = csv.GetField <int>("SztukiZeskanowane"),
                                ZeskanowanychNaKomplet = csv.GetField <int>("ZeskanowanychNaKomplet"),
                                NaKomplet           = csv.GetField <int>("NaKomplet"),
                                Wiazka              = csv.GetField <string>("Wiazka"),
                                KodCiety            = csv.GetField <string>("KodCiety"),
                                Pracownik           = csv.GetField <string>("Pracownik"),
                                DokDostawy          = csv.GetField <string>("DokDostawy"),
                                DataUtworzenia      = csv.GetField <DateTime>("DataUtworzenia"),
                                DataDostawy         = csv.GetField <DateTime>("DataDostawy"),
                                Komplet             = csv.GetField <bool>("Komplet"),
                                Deklarowany         = csv.GetField <bool>("Deklarowany"),
                                autocompleteEnabled = csv.GetField <bool>("autocompleteEnabled"),
                                wymuszonaIlosc      = csv.GetField <bool>("wymuszonaIlosc"),
                                DataDopisu          = csv.GetField <DateTime?>("DataDopisu"),
                                DopisanaIlosc       = csv.GetField <int>("DopisanaIlosc"),
                                Uwagi     = csv.GetField <string>("Uwagi"),
                                Technical = await _db.Technical.FindAsync(csv.GetField <string>("CietyWiazka")),
                                Dostawy   = new List <VtToDostawa>()
                            };
                            await _db.VTMagazyn.AddAsync(record);

                            //await _db.VTMagazyn.AddAsync(csv.GetRecord<VTMagazyn>());
                            i++;

                            if (i >= chunkSize)
                            {
                                await _db.SaveChangesAsync();

                                i = 0;
                            }
                        }
                    }
            }
            await _db.SaveChangesAsync();

            if (System.IO.File.Exists(backupDir + "/VtToDostawa.csv"))
            {
                using (var reader = new StreamReader(backupDir + "/VtToDostawa.csv"))
                    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
                    {
                        _db.RemoveRange(_db.VtToDostawa);
                        int i = 0;
                        await csv.ReadAsync();

                        csv.ReadHeader();
                        while (await csv.ReadAsync())
                        {
                            var vttd = new VtToDostawa {
                                VTMagazynId = csv.GetField <Guid>("VTMagazynId"),
                                DostawaId   = csv.GetField <Guid>("DostawaId")
                            };
                            var vt   = _db.VTMagazyn.Include(c => c.Dostawy).FirstOrDefault(c => c.VTMagazynId == vttd.VTMagazynId);
                            var dost = _db.Dostawa.Include(c => c.Skany).FirstOrDefault(c => c.DostawaId == vttd.DostawaId);
                            vttd.Dostawa   = dost;
                            vttd.VTMagazyn = vt;
                            vt.Dostawy.Add(vttd);
                            dost.Skany.Add(vttd);
                            _db.Update(dost);
                            _db.Update(vt);

                            await _db.VtToDostawa.AddAsync(vttd);

                            i++;

                            if (i >= chunkSize)
                            {
                                await _db.SaveChangesAsync();

                                i = 0;
                            }
                        }
                    }
            }

            await _db.SaveChangesAsync();

            return(RedirectToPage("/Manager/AdminManager/LoadDbFromFiles"));
        }
Пример #7
0
        private bool SearchBack(List <List <VTMagazyn> > pastScans, List <Dostawa> pastDeliveries, int value, VTMagazyn vtScan)
        {
            foreach (var scanPerDate in pastScans)
            {
                var duplicateScans    = scanPerDate.Where(c => c.KodCiety == Input.KodCiety).OrderBy(c => c.NumerKompletu).ToList();
                int mostFrequentCount = 0;

                if (duplicateScans.Count > 0)
                {
                    foreach (var scan in duplicateScans)
                    {
                        mostFrequentCount = scan.SztukiDeklarowane;

                        if (scan.SztukiZeskanowane + value == mostFrequentCount &&
                            scan.SztukiZeskanowane != mostFrequentCount)
                        {
                            scan.SztukiZeskanowane += value;
                            scan.DataDopisu         = Input.DeliveryDate;
                            scan.DopisanaIlosc      = value;
                            _db.Update(scan);
                            checkComplete(scan.NumerKompletu, Input.Wiazka, scan.DataDostawy);
                            return(true);
                        }
                    }
                    int[] setIDs = scanPerDate.Where(c => c.Komplet == false).Select(c => c.NumerKompletu).Distinct().ToArray();
                    foreach (int setID in setIDs)
                    {
                        mostFrequentCount = GetPossibleDeclaredValue(
                            new ScannedCode {
                            Wiazka = Input.Wiazka, dataDostawyOld = scanPerDate[0].DataDostawy
                        },
                            scanPerDate, pastDeliveries, setID);
                        // Only add on the previous date if "declared" value is the same as scanned
                        if (value == mostFrequentCount && duplicateScans.Where(c => c.NumerKompletu == setID).Select(c => c.KodCiety).FirstOrDefault() != vtScan.KodCiety)
                        {
                            AddToVT(0, value, mostFrequentCount, vtScan.DokDostawy, scanPerDate[0].DataDostawy);
                            checkComplete(0, Input.Wiazka, scanPerDate[0].DataDostawy);
                            return(true);
                        }
                    }
                }
                else
                {
                    mostFrequentCount = scanPerDate.Where(c => c.NumerKompletu == 0).First().SztukiDeklarowane;
                    // Only add on the previous date if "declared" value is the same as scanned
                    if (value == mostFrequentCount)
                    {
                        DateTime date = scanPerDate.Where(c => c.NumerKompletu == 0).FirstOrDefault().DataDostawy;
                        AddToVT(0, value, mostFrequentCount, vtScan.DokDostawy, date);
                        checkComplete(0, Input.Wiazka, date);
                        return(true);
                    }
                }
            }

            return(false);
        }