public int RegisterUser(int userID)
        {
            tracer.Info("Registering : " + userID.ToString());

            Registration regData;
            Employee     empData = _unitOfWork.Employees.GetByID(userID);


            string password = string.Empty;
            string clearPwd = string.Empty;

            if (empData != null)
            {
                int recordFound = _unitOfWork.Registrations.GetAllQueryable().Where(m => m.EmployeeID == userID).ToList().Count;

                if (recordFound == 0)
                {
                    password = System.Web.Security.Membership.GeneratePassword(8, 0);
                    clearPwd = password;
                    password = MD5HashProvider.CreateMD5Hash(Regex.Replace(password, @"[^a-zA-Z0-9]", m => "$"));

                    regData = new Registration()
                    {
                        EmployeeID = userID, Password = password, Status = 1, DateStamp = DateTime.Now
                    };
                    _unitOfWork.Registrations.Insert(regData);

                    if (_unitOfWork.Save() > 0)
                    {
                        tracer.Info("Registration Success. Sending Email Notification.");

                        //send email notification to user uisng the emp email

                        FastEmail email = new FastEmail();
                        email.Receipients = new List <string>()
                        {
                            empData.EmailAddress
                        };
                        email.Subject  = FASTConstant.EMAIL_SIMPLE_SUBJECT.Replace("[XXX]", "User Registration");
                        email.HTMLBody = Helper.EmailHelper.GenerateHTMLBody(Helper.EmailHelper.EmailType.REGISTRATION);

                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_RECEIPIENT_NAME, empData.FirstName + " " + empData.LastName);
                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_USERNAME, empData.EmployeeID.ToString());
                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_PASSWORD, clearPwd);

                        SMTPEmail emailSender = new SMTPEmail(_emailConfig, email);
                        emailSender.SendEmail();

                        _unitOfWork.LogSuccess(FASTConstant.AUDIT_ACTION_USER_REG, "", employeeID: userID);
                        return(FASTConstant.RETURN_VAL_SUCCESS);
                    }
                    else
                    {
                        tracer.Warn("Registration Failed.");
                        return(FASTConstant.RETURN_VAL_FAILED);
                    }
                }
                else
                {
                    tracer.Warn("Registration Failed. User already registered.");
                    _unitOfWork.LogFailure(FASTConstant.AUDIT_ACTION_USER_REG, "Duplicate ID", employeeID: userID);
                    return(FASTConstant.RETURN_VAL_DUPLICATE);
                }
            }
            else
            {
                tracer.Warn("Registration Failed. User not found in DB.");

                _unitOfWork.LogFailure(FASTConstant.AUDIT_ACTION_USER_REG, "Not Found", employeeID: userID);
                return(FASTConstant.RETURN_VAL_NOT_FOUND);
            }
        }
        public int ChangePassword(int userID, string newHashedPassword, string oldHashedPassword)
        {
            tracer.Info("Change Password  : "******"Change Password Success. Sending Email Notification.");
                            //Notify through email
                            FastEmail email = new FastEmail();
                            email.Receipients = new List <string>()
                            {
                                empData.EmailAddress
                            };
                            email.Subject  = FASTConstant.EMAIL_SIMPLE_SUBJECT.Replace("[XXX]", "Change Password");
                            email.HTMLBody = Helper.EmailHelper.GenerateHTMLBody(Helper.EmailHelper.EmailType.CHANGE_PASSWORD);

                            email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_RECEIPIENT_NAME, empData.FirstName + " " + empData.LastName);

                            SMTPEmail emailSender = new SMTPEmail(_emailConfig, email);
                            emailSender.SendEmail();

                            _unitOfWork.LogSuccess(FASTConstant.AUDIT_ACTION_USER_CHANGE_PWD, "", employeeID: userID);
                            return(FASTConstant.RETURN_VAL_SUCCESS);
                        }
                        else
                        {
                            tracer.Warn("Change Password Failed.");
                            _unitOfWork.LogFailure(FASTConstant.AUDIT_ACTION_USER_CHANGE_PWD, "", employeeID: userID);
                            return(FASTConstant.RETURN_VAL_FAILED);
                        }
                    }
                    else
                    {
                        tracer.Warn("Change Password Failed. Old Password Invalid.");
                        _unitOfWork.LogFailure(FASTConstant.AUDIT_ACTION_USER_CHANGE_PWD, "Old password not match.", employeeID: userID);
                        return(FASTConstant.RETURN_VAL_FAILED);
                    }
                }
                else
                {
                    tracer.Warn("Change Password Failed. User Not Found.");
                    _unitOfWork.LogFailure(FASTConstant.AUDIT_ACTION_USER_CHANGE_PWD, "Not Found", employeeID: userID);
                    return(FASTConstant.RETURN_VAL_NOT_FOUND);
                }
            }
            else
            {
                tracer.Warn("Change Password Failed. User Not Found.");
                _unitOfWork.LogFailure(FASTConstant.AUDIT_ACTION_USER_CHANGE_PWD, "Not Found", employeeID: userID);
                return(FASTConstant.RETURN_VAL_NOT_FOUND);
            }
        }
        public int ResetPassword(int userID)
        {
            tracer.Info("Reset Password : "******"[^a-zA-Z0-9]", m => "$");
                    password      = MD5HashProvider.CreateMD5Hash(clearPassword);

                    regData.Password = password;

                    _unitOfWork.Registrations.Update(regData);

                    if (_unitOfWork.Save() > 0)
                    {
                        tracer.Info("Reset Password Success. Sending Email Notification.");
                        //notify through email
                        FastEmail email = new FastEmail();
                        email.Receipients = new List <string>()
                        {
                            empData.EmailAddress
                        };
                        email.Subject  = FASTConstant.EMAIL_SIMPLE_SUBJECT.Replace("[XXX]", "Reset Password");
                        email.HTMLBody = Helper.EmailHelper.GenerateHTMLBody(Helper.EmailHelper.EmailType.RESET_PASSWORD);

                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_RECEIPIENT_NAME, empData.FirstName + " " + empData.LastName);
                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_USERNAME, empData.EmployeeID.ToString());
                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_PASSWORD, clearPassword);


                        SMTPEmail emailSender = new SMTPEmail(_emailConfig, email);
                        emailSender.SendEmail();


                        _unitOfWork.LogSuccess(FASTConstant.AUDIT_ACTION_USER_RESET, "", employeeID: userID);
                        return(FASTConstant.RETURN_VAL_SUCCESS);
                    }
                    else
                    {
                        tracer.Warn("Reset Password Failed.");
                        _unitOfWork.LogFailure(FASTConstant.AUDIT_ACTION_USER_RESET, "", employeeID: userID);
                        return(FASTConstant.RETURN_VAL_FAILED);
                    }
                }
                else
                {
                    tracer.Warn("Reset Password Failed. User Not Found.");
                    _unitOfWork.LogFailure(FASTConstant.AUDIT_ACTION_USER_RESET, "Not Found", employeeID: userID);
                    return(FASTConstant.RETURN_VAL_NOT_FOUND);
                }
            }
            else
            {
                tracer.Warn("Reset Password Failed. User Not Found.");
                _unitOfWork.LogFailure(FASTConstant.AUDIT_ACTION_USER_RESET, "Not Found", employeeID: userID);
                return(FASTConstant.RETURN_VAL_NOT_FOUND);
            }
        }
Exemple #4
0
        public ActionResult UploadFile()
        {
            ExcelHelper excelHelp = new ExcelHelper();
            List <FixAssetExcelUploadModel> assets = new List <FixAssetExcelUploadModel>();
            BulkUpload           currentUpload     = new Common.BulkUpload();
            BulkUploadProcess    bulkProcess       = new BulkUploadProcess();
            AssetProcess         assetProcess      = new AssetProcess();
            EmployeeProcess      employeeProcess   = new EmployeeProcess();
            Employee             sender            = new Employee();
            ConfigurationProcess configProcess     = new ConfigurationProcess();

            FastEmailConfiguration emailConfig = configProcess.GetEmailConfiguration();

            StringBuilder uploadLog = new StringBuilder();

            string filename         = string.Empty;
            string completeFileName = string.Empty;

            //This is for the logging
            bulkProcess.UserID     = User.Identity.Name.ToInteger();
            configProcess.UserID   = User.Identity.Name.ToInteger();
            employeeProcess.UserID = User.Identity.Name.ToInteger();
            assetProcess.UserID    = User.Identity.Name.ToInteger();


            try
            {
                #region Get Request Files
                foreach (string upload in Request.Files)
                {
                    if (!(Request.Files[upload] != null && Request.Files[upload].ContentLength > 0))
                    {
                        continue;
                    }
                    string path = HttpContext.Server.MapPath("\\App_Data\\BulkUploads");
                    filename = Path.GetFileName(Request.Files[upload].FileName);

                    //check the filename and ensure its an xlsx file
                    if (String.Compare(filename.Substring(filename.Length - 4), "xlsx", true) != 0)
                    {
                        throw new Exception("Invalid file extension.");
                    }

                    //add the current time as unique indicator
                    filename = DateTime.Now.ToFileTime().ToString() + "_" + filename;

                    // If Upload folder is not yet existing, this code will create that directory.
                    if (!System.IO.Directory.Exists(path))
                    {
                        System.IO.Directory.CreateDirectory(path);
                    }
                    completeFileName = Path.Combine(path, filename);
                    Request.Files[upload].SaveAs(completeFileName);
                }
                #endregion

                BulkUpload newFile = new BulkUpload()
                {
                    EmployeeID   = User.Identity.Name.ToInteger(),
                    FilePath     = filename,
                    TotalRecords = 0,
                    TotalInserts = 0,
                    RequestDate  = DateTime.Now,
                    Type         = FASTConstant.BULKIPLOAD_TYPE_ASSET
                };

                if (bulkProcess.Add(newFile) == FASTConstant.RETURN_VAL_SUCCESS)
                {
                    //get the current upload
                    currentUpload = bulkProcess.GetCurrentUpload(newFile.FilePath, newFile.EmployeeID);
                }

                if (currentUpload != null)
                {
                    #region Process the excel file
                    //Success! Lets process the file.
                    System.Data.DataTable fixAssetTable = new DataTable();

                    fixAssetTable = excelHelp.GetExcelDataTable(completeFileName, "SELECT * FROM [FixAsset$]");
                    fixAssetTable = excelHelp.ConvertToFixAssetTable(fixAssetTable);

                    if (fixAssetTable == null)
                    {
                        throw new Exception("The upload file contains null data.");
                    }

                    assets = fixAssetTable.ToList <Models.FixAssetExcelUploadModel>();
                    sender = employeeProcess.GetEmployeeByID(currentUpload.EmployeeID);

                    if (assets.Count > 0)
                    {
                        int totalInserts = 0;
                        currentUpload.TotalRecords = assets.Count;

                        bulkProcess.UpdateProcessingStep(currentUpload, FASTConstant.BULKUPLOAD_STATUS_INPROGRESS);

                        foreach (FixAssetExcelUploadModel asset in assets)
                        {
                            FixAsset tempAsset = new FixAsset()
                            {
                                AssetTag        = asset.AssetTag,
                                SerialNumber    = asset.SerialNumber,
                                Model           = asset.Model,
                                Brand           = asset.Brand,
                                AssetClassID    = asset.AssetClassID,
                                AssetTypeID     = asset.AssetTypeID,
                                AssetStatusID   = asset.AssetStatusID,
                                AcquisitionDate = asset.AcquisitionDate
                            };


                            if (assetProcess.Add(tempAsset) == FASTConstant.RETURN_VAL_SUCCESS)
                            {
                                totalInserts++;
                                uploadLog.AppendLine(String.Format("<p>{0} : {1} inserted.</p>", FASTConstant.SUCCESSFUL, asset.AssetTag));
                            }
                            else
                            {
                                uploadLog.AppendLine(String.Format("<p>{0} : {1} not inserted.</p>", FASTConstant.FAILURE, asset.AssetTag));
                            }
                        }

                        currentUpload.TotalInserts = totalInserts;
                        bulkProcess.UpdateProcessingStep(currentUpload, FASTConstant.BULKUPLOAD_STATUS_DONE);


                        //Send email to the requestor
                        FastEmail email = new FastEmail();
                        email.Receipients = new List <string>()
                        {
                            sender.EmailAddress
                        };
                        email.Subject  = FASTConstant.EMAIL_SIMPLE_SUBJECT.Replace("[XXX]", "Fix Asset Bulk Upload Result");
                        email.HTMLBody = FASTProcess.Helper.EmailHelper.GenerateHTMLBody(FASTProcess.Helper.EmailHelper.EmailType.BULK_UPLOAD);

                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_RECEIPIENT_NAME, sender.FirstName + " " + sender.LastName);
                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_BULKUPLOAD_INFO, bulkProcess.GenerateUploadinformationHTML(currentUpload));
                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_BULKUPLOAD_LOG, uploadLog.ToString());
                        email.HTMLBody = email.HTMLBody.Replace(FASTConstant.EMAIL_BULKUPLOAD_SUMMARY, bulkProcess.GenerateSummaryinformationHTML(currentUpload));

                        SMTPEmail emailSender = new SMTPEmail(emailConfig, email);
                        emailSender.SendEmail();
                    }
                    else
                    {
                        bulkProcess.UpdateProcessingStep(currentUpload, FASTConstant.BULKUPLOAD_STATUS_DONE);
                    }
                    #endregion
                }

                TempData["Result"]       = "SUCCESSFUL";
                TempData["Source"]       = "File Upload";
                TempData["ExtraMessage"] = "An email will be sent to you containing the results of the upload process.";
                TempData["Action"]       = "Index";
                TempData["Controller"]   = "FixAsset";

                return(View("~/Views/Shared/Result.cshtml"));
            }
            catch (Exception ex)
            {
                TempData["Result"]       = "FAILURE";
                TempData["Source"]       = "Fix Asset Bulk Upload";
                TempData["ExtraMessage"] = ex.Message;
                return(View("~/Views/Shared/Result.cshtml"));
            }
        }