public ActionResult BulkUpload(HttpPostedFileBase file)
        {
            var gVal = new GenericValidator();

            try
            {
                var importerInfo = GetLoggedOnUserInfo();
                if (importerInfo == null || importerInfo.Id < 1)
                {
                    gVal.Code  = -1;
                    gVal.Error = "Your session has timed out";
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                var bankid = new AspNetUserServices().GetBankId(importerInfo.Id);
                if (bankid < 1)
                {
                    gVal.Code  = -1;
                    gVal.Error = "Error: process could not be completed. Please try again later";
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                if (file.ContentLength > 0)
                {
                    var folderPath = HostingEnvironment.MapPath("~/BankBranchBulkUploads/" + importerInfo.Id.ToString(CultureInfo.InvariantCulture));
                    if (string.IsNullOrEmpty(folderPath))
                    {
                        gVal.Code  = -1;
                        gVal.Error = "Folder access was denied";
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (!Directory.Exists(folderPath))
                    {
                        Directory.CreateDirectory(folderPath);
                        var dInfo     = new DirectoryInfo(folderPath);
                        var dSecurity = dInfo.GetAccessControl();
                        dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
                        dInfo.SetAccessControl(dSecurity);
                    }

                    var fileName = file.FileName;
                    var path     = Path.Combine(folderPath, fileName);
                    if (string.IsNullOrEmpty(path))
                    {
                        gVal.Code  = -1;
                        gVal.Error = "Folder access was denied";
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (System.IO.File.Exists(path))
                    {
                        System.IO.File.Delete(path);
                    }

                    file.SaveAs(path);

                    gVal.BankUserInfoList = new List <BankUserInfo>();

                    var msg               = string.Empty;
                    var errorList         = new List <long>();
                    var branches          = new List <BankBranchObject>();
                    var successfulUploads = ReadExcelData(path, "Branches", ref errorList, ref msg, ref branches, importerInfo.Id);
                    var saveCount         = 0;
                    if (!successfulUploads.Any())
                    {
                        gVal.Code  = -1;
                        gVal.Error = msg;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    branches.ForEach(s =>
                    {
                        s.BankId = bankid;
                        var tt   = new BankServices().AddBankBranch(s);
                        if (tt > 0)
                        {
                            saveCount++;
                        }
                        else
                        {
                            errorList.Add(1);
                        }
                    });


                    if (errorList.Any() && saveCount > 0)
                    {
                        var feedbackMessage = saveCount + " records were successfully uploaded." +
                                              "\n" + errorList.Count + " record(s) could not be uploaded due to specified/unspecified errors.";
                        if (msg.Length > 0)
                        {
                            feedbackMessage += "<br/>" + msg;
                        }

                        gVal.Code  = -7;
                        gVal.Error = feedbackMessage;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (saveCount != branches.Count && saveCount > 0)
                    {
                        var feedbackMessage = saveCount + " records were successfully uploaded." +
                                              "\n" + (branches.Count - saveCount) + " record(s) could not be uploaded due to specified/unspecified errors.";
                        if (msg.Length > 0)
                        {
                            feedbackMessage += "<br/>" + msg;
                        }

                        gVal.Code  = -7;
                        gVal.Error = feedbackMessage;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (errorList.Any() && saveCount < 1)
                    {
                        var feedbackMessage = errorList.Count + " record(s) could not be uploaded due to specified/unspecified errors.";
                        ViewBag.ErrorCode = -1;

                        if (msg.Length > 0)
                        {
                            feedbackMessage += "<br/>" + msg;
                        }

                        gVal.Code  = -1;
                        gVal.Error = feedbackMessage;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (!errorList.Any() && saveCount > 0)
                    {
                        var feedbackMessage = saveCount + " records were successfully uploaded.";

                        if (msg.Length > 0)
                        {
                            feedbackMessage += "<br/>" + msg;
                        }

                        gVal.Code  = 5;
                        gVal.Error = feedbackMessage;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }
                }
                gVal.Code  = -1;
                gVal.Error = "The selected file is invalid";
                return(Json(gVal, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                ErrorLogger.LoggError(ex.StackTrace, ex.Source, ex.Message);
                gVal.Code  = -1;
                gVal.Error = "File processing failed.";
                return(Json(gVal, JsonRequestBehavior.AllowGet));
            }
        }
Beispiel #2
0
        public ActionResult BulkUpload(HttpPostedFileBase file)
        {
            var gVal = new GenericValidator();

            try
            {
                var importerInfo = GetLoggedOnUserInfo();
                if (importerInfo == null || importerInfo.Id < 1)
                {
                    gVal.Code  = -1;
                    gVal.Error = "Your session has timed out";
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                var bankid = new AspNetUserServices().GetBankId(importerInfo.Id);
                if (bankid < 1)
                {
                    gVal.Code  = -1;
                    gVal.Error = "Error: process could not be completed. Please try again later";
                    return(Json(gVal, JsonRequestBehavior.AllowGet));
                }

                if (file.ContentLength > 0)
                {
                    var folderPath = HostingEnvironment.MapPath("~/BulkUserUploads/" + importerInfo.Id.ToString(CultureInfo.InvariantCulture));
                    if (string.IsNullOrEmpty(folderPath))
                    {
                        gVal.Code  = -1;
                        gVal.Error = "Folder access was denied";
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (!Directory.Exists(folderPath))
                    {
                        Directory.CreateDirectory(folderPath);
                        var dInfo     = new DirectoryInfo(folderPath);
                        var dSecurity = dInfo.GetAccessControl();
                        dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
                        dInfo.SetAccessControl(dSecurity);
                    }

                    var fileName = file.FileName;
                    var path     = Path.Combine(folderPath, fileName);
                    if (string.IsNullOrEmpty(path))
                    {
                        gVal.Code  = -1;
                        gVal.Error = "Folder access was denied";
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (System.IO.File.Exists(path))
                    {
                        System.IO.File.Delete(path);
                    }

                    file.SaveAs(path);

                    gVal.BankUserInfoList = new List <BankUserInfo>();

                    var msg               = string.Empty;
                    var errorList         = new List <long>();
                    var users             = new List <UserProfileObject>();
                    var successfulUploads = ReadExcelData(path, "Users", ref errorList, ref msg, ref users, importerInfo.Id);
                    var saveCount         = 0;
                    if (!successfulUploads.Any())
                    {
                        gVal.Code  = -1;
                        gVal.Error = msg;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    var rad = new Random();
                    foreach (var s in users)
                    {
                        var tt = new AspNetUserServices().AddPerson(s);
                        if (tt > 0)
                        {
                            var user = new ApplicationUser
                            {
                                UserName       = s.AspNetUserObject.Email,
                                Email          = s.AspNetUserObject.Email,
                                EmailConfirmed = true,
                                PhoneNumber    = s.AspNetUserObject.PhoneNumber,
                                UserInfo       = new ApplicationDbContext.UserProfile
                                {
                                    IsActive = true,
                                    IsAdmin  = false,
                                    PersonId = tt
                                }
                            };

                            var pss    = rad.Next();
                            var result = UserManager.Create(user, pss.ToString());
                            if (result.Succeeded)
                            {
                                UserManager.AddToRole(user.Id, s.Role);
                                var bankUser = new BankUserObject
                                {
                                    BranchCode = s.BranchCode,
                                    BankId     = bankid,
                                    UserId     = user.UserInfo.Id
                                };
                                var bnkusr = new AspNetUserServices().AddBankUser(bankUser);
                                if (bnkusr > 0)
                                {
                                    var model = new UserViewModel
                                    {
                                        IsUser        = true,
                                        Email         = user.Email,
                                        Password      = pss.ToString(),
                                        SecurityStamp = user.SecurityStamp,
                                        Id            = user.UserInfo.Id,
                                        FirstName     = s.PersonObject.FirstName,
                                        LastName      = s.PersonObject.LastName
                                    };

                                    SendMail(model);
                                    gVal.BankUserInfoList.Add(new BankUserInfo
                                    {
                                        Email    = user.Email,
                                        Name     = s.PersonObject.FirstName + " " + s.PersonObject.LastName,
                                        Password = pss.ToString()
                                    });
                                    saveCount++;
                                }
                            }
                            else
                            {
                                new AspNetUserServices().DeletePerson(tt);
                                errorList.Add(1);
                            }
                        }
                    }


                    if (errorList.Any() && saveCount > 0)
                    {
                        var feedbackMessage = saveCount + " records were successfully uploaded." +
                                              "\n" + errorList.Count + " record(s) could not be uploaded due to specified/unspecified errors.";
                        if (msg.Length > 0)
                        {
                            feedbackMessage += "<br/>" + msg;
                        }

                        gVal.Code  = -7;
                        gVal.Error = feedbackMessage;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (saveCount != users.Count && saveCount > 0)
                    {
                        var feedbackMessage = saveCount + " records were successfully uploaded." +
                                              "\n" + (users.Count - saveCount) + " record(s) could not be uploaded due to specified/unspecified errors.";
                        if (msg.Length > 0)
                        {
                            feedbackMessage += "<br/>" + msg;
                        }

                        gVal.Code  = -7;
                        gVal.Error = feedbackMessage;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (errorList.Any() && saveCount < 1)
                    {
                        var feedbackMessage = errorList.Count + " record(s) could not be uploaded due to specified/unspecified errors.";
                        ViewBag.ErrorCode = -1;

                        if (msg.Length > 0)
                        {
                            feedbackMessage += "<br/>" + msg;
                        }

                        gVal.Code  = -1;
                        gVal.Error = feedbackMessage;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }

                    if (!errorList.Any() && saveCount > 0)
                    {
                        var feedbackMessage = saveCount + " records were successfully uploaded.";

                        if (msg.Length > 0)
                        {
                            feedbackMessage += "<br/>" + msg;
                        }

                        gVal.Code  = 5;
                        gVal.Error = feedbackMessage;
                        return(Json(gVal, JsonRequestBehavior.AllowGet));
                    }
                }
                gVal.Code  = -1;
                gVal.Error = "The selected file is invalid";
                return(Json(gVal, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                ErrorLogger.LoggError(ex.StackTrace, ex.Source, ex.Message);
                gVal.Code  = -1;
                gVal.Error = "File processing failed.";
                return(Json(gVal, JsonRequestBehavior.AllowGet));
            }
        }