public async Task <IActionResult> Edit(int id, SolduriCasa solduriCasa)
        {
            if (id != solduriCasa.SolduriCasaId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.SolduriCasa.Update(solduriCasa);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SolduriCasaExists(solduriCasa.SolduriCasaId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                TempData["Message"] = "Solduri casa actualizate cu succes!";
                TempData["Success"] = "true";
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ClientId"] = new SelectList(_context.Client.OrderBy(x => x.Denumire), "ClientId", "Denumire", solduriCasa.ClientId);
            return(View(solduriCasa));
        }
        public async Task <IActionResult> Create(SolduriCasa solduriCasa)
        {
            if (ModelState.IsValid)
            {
                _context.SolduriCasa.Add(solduriCasa);
                await _context.SaveChangesAsync();

                TempData["Message"] = "Solduri casa adaugate cu succes!";
                TempData["Success"] = "true";
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ClientId"] = new SelectList(_context.Client.OrderBy(x => x.Denumire), "ClientId", "Denumire", solduriCasa.ClientId);
            return(View(solduriCasa));
        }
        private static SolduriCasa CreateSold(XElement sold, int clientId)
        {
            SolduriCasa soldNou = new SolduriCasa
            {
                data      = DateTime.Parse(sold.Element("data").Value),
                sold_prec = float.Parse(sold.Element("sold_prec").Value),
                incasari  = float.Parse(sold.Element("incasari").Value.ToString()),
                plati     = float.Parse(sold.Element("plati").Value.ToString()),
                sold_zi   = float.Parse(sold.Element("sold_zi").Value),
                ClientId  = clientId
            };

            return(soldNou);
        }
        public async Task <IActionResult> ImportSolduri(int?id)
        {
            DocumentVM documentVM = new DocumentVM()
            {
            };

            documentVM.ApplicationUserId = _context.ApplicationUsers.FirstOrDefault(u => u.UserName == User.Identity.Name).Id;
            var documentTip = await _context.TipDocument.FirstOrDefaultAsync(u => u.Denumire == "XML");

            if (id != 0)
            {
                documentVM.ClientId = id.Value;
            }

            // preluam documentele primite prin ajax
            var files = Request.Form.Files;

            // parcurgem fiecare document si il adaugam
            foreach (var file in files)
            {
                Document document = new Document()
                {
                    ApplicationUserId = documentVM.ApplicationUserId,
                    ClientId          = documentVM.ClientId,
                    TipDocumentId     = documentTip.TipDocumentId,
                    DocumentPath      = await _fileManager.SaveDocument(file, documentTip.Denumire, documentVM.ClientId, documentVM.ApplicationUserId),
                    Data = DateTime.Now
                };

                if (ModelState.IsValid)
                {
                    _context.Document.Add(document);

                    // procesam XML-ul
                    // adaugam salariatii preluati din acesta clientului ales de utilizator

                    var       fullPath = $"C:/Users/user/source/repos/Licenta/wwwroot/xml/{document.DocumentPath}";
                    XDocument doc      = XDocument.Load(fullPath);

                    var solduri = from sold in doc.Root.Elements()
                                  where DateTime.Parse(sold.Element("data").Value).Day > 25
                                  select sold;

                    IList <SolduriCasa> solduriCasa = new List <SolduriCasa>();

                    // Adaugam doar soldurile care sunt dupa data de 25 a lunii
                    foreach (XElement sold in solduri)
                    {
                        SolduriCasa soldNou = CreateSold(sold, document.ClientId);
                        solduriCasa.Add(soldNou);
                    }

                    // pastram soldurile din ultima data cu activitate a lunii
                    for (var i = 0; i < solduriCasa.Count - 1; i++)
                    {
                        if (solduriCasa[i].data.Month.ToString() == solduriCasa[i + 1].data.Month.ToString() &&
                            solduriCasa[i].data.Day < solduriCasa[i + 1].data.Day)
                        {
                            solduriCasa.Remove(solduriCasa[i]);
                            i--;
                        }
                    }

                    // adaugam cate un sold pentru fiecare luna
                    foreach (SolduriCasa sold in solduriCasa)
                    {
                        _context.SolduriCasa.Add(sold);
                    }

                    // stergem din memorie: bd si server XML-ul
                    _fileManager.DeleteDocumentXML(document.DocumentPath);
                    _context.Document.Remove(document);
                    _context.SaveChanges();
                }
            }
            return(PartialView("_AddSolduriImport", documentVM));
        }