Ejemplo n.º 1
0
        public JsonResult Upload(FilesViewModel model)
        {
            var enhetskod  = String.Empty;
            var resultList = new List <ViewDataUploadFilesResult>();
            var userName   = "";

            try
            {
                //Get orgcode
                var orgCode              = String.Empty;
                var org                  = _portalService.HamtaOrgForAnvandare(User.Identity.GetUserId());
                var orgtypeListForOrg    = _portalService.HamtaOrgtyperForOrganisation(org.Id);
                var orgtypeListForSubDir = _portalService.HamtaOrgtyperForDelregister(Convert.ToInt32(model.SelectedRegisterId));

                //Compare organisations orgtypes with orgtypes for current subdir
                foreach (var subDirOrgtype in orgtypeListForSubDir)
                {
                    foreach (var orgOrgtype in orgtypeListForOrg)
                    {
                        if (subDirOrgtype.Typnamn == orgOrgtype.Typnamn)
                        {
                            if (orgOrgtype.Typnamn == "Kommun")
                            {
                                orgCode = _portalService.HamtaKommunKodForAnvandare(User.Identity.GetUserId());
                            }
                            else if (orgOrgtype.Typnamn == "Landsting")
                            {
                                orgCode = _portalService.HamtaLandstingsKodForAnvandare(User.Identity.GetUserId());
                            }
                            else
                            {
                                orgCode = _portalService.HamtaInrapporteringskodKodForAnvandare(User.Identity.GetUserId());
                            }
                        }
                    }
                }

                //var orgCodeName = orgtypeList[0].Typnamn;
                //if (orgCodeName == "Kommun")
                //{
                //    orgCode = _portalService.HamtaKommunKodForAnvandare(User.Identity.GetUserId());
                //}
                //else if (orgCodeName == "Landsting")
                //{
                //    orgCode = _portalService.HamtaLandstingsKodForAnvandare(User.Identity.GetUserId());
                //}
                //else
                //{
                //    orgCode = _portalService.HamtaInrapporteringskodKodForAnvandare(User.Identity.GetUserId());
                //}
                //var kommunKod = _portalService.HamtaKommunKodForAnvandare(User.Identity.GetUserId());
                userName = User.Identity.GetUserName();
                var CurrentContext = HttpContext;

                if (model.SelectedUnitId != null)
                {
                    enhetskod = model.SelectedUnitId;
                    if (String.IsNullOrEmpty(orgCode))
                    {
                        orgCode = enhetskod;
                    }
                }


                //Lägg till kontroll att antal filer > 0 (kan ha stoppats av användarens webbläsare (?))
                var request  = CurrentContext.Request;
                var numFiles = request.Files.Count;
                if (numFiles <= 0)
                {
                    throw new System.ArgumentException("Filer saknas vid uppladdning av fil.");
                }

                filesHelper.UploadAndShowResults(CurrentContext, resultList, User.Identity.GetUserId(), userName,
                                                 orgCode, Convert.ToInt32(model.SelectedRegisterId), enhetskod, model.SelectedPeriod,
                                                 model.RegisterList);
            }
            catch (ArgumentException e)
            {
                ErrorManager.WriteToErrorLog("FileUploadController", "Upload", e.ToString(), e.HResult, User.Identity.Name);
                var errorModel = new CustomErrorPageModel
                {
                    Information  = "Filer saknas vid uppladdning av fil.",
                    ContactEmail = ConfigurationManager.AppSettings["ContactEmail"],
                };
                RedirectToAction("CustomError", new { model = errorModel });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                ErrorManager.WriteToErrorLog("FileUploadController", "Upload", e.ToString(), e.HResult, User.Identity.Name);
                var errorModel = new CustomErrorPageModel
                {
                    Information  = "Ett fel inträffade vid uppladdning av fil.",
                    ContactEmail = ConfigurationManager.AppSettings["ContactEmail"],
                };
                RedirectToAction("CustomError", new { model = errorModel });
            }

            JsonFiles files = new JsonFiles(resultList);

            bool isEmpty = !resultList.Any();

            if (isEmpty)
            {
                return(Json("Error"));
            }
            else
            {
                //Save to database filelog
                foreach (var itemFile in resultList)
                {
                    try
                    {
                        _portalService.SparaTillDatabasFillogg(userName, itemFile.name, itemFile.sosName, itemFile.leveransId, itemFile.sequenceNumber);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                        ErrorManager.WriteToErrorLog("FileUploadController", "Upload", e.ToString(), e.HResult, User.Identity.Name);
                        var errorModel = new CustomErrorPageModel
                        {
                            Information  = "Ett fel inträffade när filen skulle sparas till registrets logg.",
                            ContactEmail = ConfigurationManager.AppSettings["ContactEmail"],
                        };
                        RedirectToAction("CustomError", new { model = errorModel });
                    }
                }
                return(Json(files));
            }
        }