Exemple #1
0
        public IHttpActionResult Get(string local = null, DateTime?min_date = null, DateTime?max_date = null, bool show_success_records = false, int?page = 0, int?pageSize = 25)
        {
            int currentPage     = page.Value;
            int currentPageSize = pageSize.Value;
            IEnumerable <EMemberRegistration> mbrs = EMemberRegistrationRepository.GetAll();

            if (this.TokenId.IsSuperAdmin && local != null)
            {
                mbrs = mbrs.Where(u => u.LocalNumber == local);
            }
            if (!this.TokenId.IsSuperAdmin)
            {
                mbrs = mbrs.Where(u => u.LocalNumber == this.TokenId.LocalNumber);
            }

            if (min_date != null)
            {
                mbrs = mbrs.Where(e => e.CreatedOn >= min_date.Value);
            }
            if (max_date != null)
            {
                mbrs = mbrs.Where(e => e.CreatedOn <= max_date.Value);
            }
            if (min_date == null && max_date == null)
            {
                if (!show_success_records)
                {
                    mbrs = mbrs.Where(e => !e.Success_Flag);
                }
            }

            var mbrList    = mbrs.OrderByDescending(u => u.CreatedOn).Skip(currentPage * currentPageSize).Take(currentPageSize).ToList();
            var mbrsCount  = mbrs;
            int totalCount = mbrsCount.Count();

            IEnumerable <EMemberRegistrationModel> mbrVMs = Mapper.Map <IEnumerable <EMemberRegistration>, IEnumerable <EMemberRegistrationModel> >(mbrList);

            PaginationSet <EMemberRegistrationModel> pagedSet = new PaginationSet <EMemberRegistrationModel>()
            {
                Page       = currentPage,
                TotalCount = totalCount,
                TotalPages = (int)Math.Ceiling((decimal)totalCount / currentPageSize),
                Items      = mbrVMs
            };

            return(Ok(pagedSet));
        }
        // GET: EMemberRegistrations
        public async Task <ActionResult> Index()
        {
            logger.Info("Registration List Called");
            IQueryable <EMemberRegistration> mbrs = EMemberRegistrationRepository.GetAll();

            if (!this.TokenId.IsSuperAdmin)
            {
                mbrs = mbrs.Where(u => u.LocalNumber == this.TokenId.LocalNumber);
            }

            mbrs = mbrs.Where(e => !e.Success_Flag);

            var mbrList = await mbrs.OrderByDescending(u => u.CreatedOn).ToListAsync();

            IEnumerable <EMemberRegistrationViewModel> mbrVMs = Mapper.Map <IEnumerable <EMemberRegistration>, IEnumerable <EMemberRegistrationViewModel> >(mbrList);

            HelperFunctions.FindTimssId(mbrVMs);

            ViewData["DuesCardsPath"] = LocalSettingsConfig.LocalSettings.DuesCardsPath;
            return(View(mbrVMs));
        }
        public ActionResult GetPendingCardsReport()
        {
            IQueryable <EMemberRegistration> mbrs = EMemberRegistrationRepository.GetAll();

            if (!this.TokenId.IsSuperAdmin)
            {
                mbrs = mbrs.Where(u => u.LocalNumber == this.TokenId.LocalNumber);
            }

            mbrs = mbrs.Where(e => !e.Success_Flag);

            var mbrList = mbrs.OrderByDescending(u => u.CreatedOn).ToList();

            IEnumerable <EMemberRegistrationViewModel> mbrVMs = Mapper.Map <IEnumerable <EMemberRegistration>, IEnumerable <EMemberRegistrationViewModel> >(mbrList);

            HelperFunctions.FindTimssId(mbrVMs);
            string fileName = "L" + LocalSettingsConfig.LocalSettings.LocalNumber + "_PendingCards" + DateTime.UtcNow.ToString("_yyyymmdd_HHmmssfff");

            fileName = HelperFunctions.PrepareExcelFile(mbrVMs, fileName);
            return(File(fileName, "text/csv", Path.GetFileName(fileName)));
        }
Exemple #4
0
        public IHttpActionResult Get(string uuid)
        {
            if (string.IsNullOrEmpty(uuid))
            {
                throw new ArgumentNullException(nameof(uuid));
            }
            var id  = uuid;
            var mbr = EMemberRegistrationRepository.GetSingle(id);

            if (mbr == null)
            {
                return(BadRequest("Member Not Found"));
            }
            if (!this.TokenId.IsSuperAdmin && this.TokenId.LocalNumber != mbr.LocalNumber)
            {
                return(BadRequest("Insufficient permissions to view eMember Registrations of other locals."));
            }

            var model = Mapper.Map <EMemberRegistrationModel>(mbr);

            return(Ok(model));
        }
        //private void FindTimssId(IEnumerable<EMemberRegistrationViewModel> mbrList) {
        //  foreach(var mbr in mbrList) {
        //    var timssId = TimssData.GetMemberId(mbr.Ssn);
        //    mbr.IsNewMember = timssId == string.Empty ? true : false;
        //  }
        //}

        public async Task <ActionResult> History(string local = null, DateTime?min_date = null, DateTime?max_date = null, string searchFilter = null, int?page = 0, int?pageSize = 20, bool?includeDiscarded = true)
        {
            int currentPage     = page.Value;
            int currentPageSize = pageSize.Value;

            if (currentPage == 0)
            {
                currentPage = 1;
            }
            ViewBag.CurrentFilter    = searchFilter;
            ViewBag.MinDate          = min_date;
            ViewBag.MaxDate          = max_date;
            ViewBag.IncludeDiscarded = includeDiscarded;

            IQueryable <EMemberRegistration> mbrs = EMemberRegistrationRepository.GetAll();

            if (this.TokenId.IsSuperAdmin && local != null)
            {
                mbrs = mbrs.Where(u => u.LocalNumber == local);
            }
            if (!this.TokenId.IsSuperAdmin)
            {
                mbrs = mbrs.Where(u => u.LocalNumber == this.TokenId.LocalNumber);
            }

            if (min_date != null)
            {
                mbrs = mbrs.Where(e => e.CreatedOn >= min_date.Value);
            }
            if (max_date != null)
            {
                mbrs = mbrs.Where(e => e.CreatedOn <= max_date.Value);
            }
            if (searchFilter != null)
            {
                var values = searchFilter.Split(' ');
                if (values.Length > 1 && values[0].Trim().Length > 0 && values[1].Trim().Length > 0)
                {
                    //Search is by Name
                    string firstPart  = values[0].Trim();
                    string secondPart = values[1].Trim();
                    mbrs = mbrs.Where(m =>
                                      (m.First_Name.StartsWith(firstPart) && m.Last_Name.StartsWith(secondPart)) ||
                                      (m.Last_Name.StartsWith(firstPart) && m.First_Name.StartsWith(secondPart)));
                }
                else
                {
                    mbrs = mbrs.Where(m => m.Last_Name.Contains(searchFilter) || m.First_Name.Contains(searchFilter) ||
                                      m.Ssn.Replace("-", "").Contains(searchFilter) || m.Member_Union_Id.Contains(searchFilter));
                }
            }

            mbrs = mbrs.Where(e => e.Success_Flag);
            if (includeDiscarded.HasValue && includeDiscarded.Value == false)
            {
                mbrs = mbrs.Where(e => e.Processed_Flag); // Skips the DISCARDED records
            }
            var mbrList = await mbrs.OrderByDescending(u => u.Processed_Date).ToListAsync();

            var mbrVMs = Mapper.Map <IEnumerable <EMemberRegistration>, IEnumerable <EMemberRegistrationViewModel> >(mbrList);

            return(View(mbrVMs.ToPagedList(currentPage, currentPageSize)));
        }
        public async Task <ActionResult> Edit([Bind(Include = "Id,Position,Member_Union_Id, Mbr_Level1, Mbr_Level2, Mbr_Level3, Mbr_Type, Employer_Name, UpdateName, UpdateAddress, UpdateHouse, UpdatePhone, UpdateEmail, Department, Section, Craft, FullPartTime, Notes, TipActionCode, Validated_Flag, Validation_Status, Notes, Discard_Reason")] EMemberRegistration eMemberRegistration, string command)
        {
            //Set Labels for MBR_LEVEL1, MBR_LEVEL2, MBR_LEVEL3
            ViewData["MBR_LEVEL1"] = (string)System.Web.HttpContext.Current.Application["MBR_LEVEL1"];
            ViewData["MBR_LEVEL2"] = (string)System.Web.HttpContext.Current.Application["MBR_LEVEL2"];
            ViewData["MBR_LEVEL3"] = (string)System.Web.HttpContext.Current.Application["MBR_LEVEL3"];
            // Dropdown lists
            ViewBag.MbrTypeCodes       = (IEnumerable <SelectListItem>)System.Web.HttpContext.Current.Application["MBR_TYPE_CODES"];
            ViewBag.Mbrlevel1Codes     = (IEnumerable <SelectListItem>)System.Web.HttpContext.Current.Application["MBRLEVEL1_CODES"];
            ViewBag.Mbrlevel2Codes     = (IEnumerable <SelectListItem>)System.Web.HttpContext.Current.Application["MBRLEVEL2_CODES"];
            ViewBag.Mbrlevel3Codes     = (IEnumerable <SelectListItem>)System.Web.HttpContext.Current.Application["MBRLEVEL3_CODES"];
            ViewBag.DepartmentCodes    = (IEnumerable <SelectListItem>)System.Web.HttpContext.Current.Session["DEPT_CODES"];
            ViewBag.SectionCodes       = (IEnumerable <SelectListItem>)System.Web.HttpContext.Current.Application["DEM_SECTION_CODES"];
            ViewBag.CraftCodes         = (IEnumerable <SelectListItem>)System.Web.HttpContext.Current.Application["CRAFT_CODES"];
            ViewBag.FullPartTimeCodes  = (IEnumerable <SelectListItem>)System.Web.HttpContext.Current.Application["DEMFULLPART_CODES"];
            ViewBag.DiscardReasonCodes = (IEnumerable <SelectListItem>)System.Web.HttpContext.Current.Application["DISCARDREASON_CODES"];

            //        if (ModelState.IsValid) {
            EMemberRegistration dbRecord = await db.EMemberRegistration.FindAsync(eMemberRegistration.Id);

            if (dbRecord == null)
            {
                return(HttpNotFound());
            }
            logger.Info(" \t\t\t\t\t" + dbRecord.Last_Name + " " + dbRecord.First_Name + " record fetched from DB.");

            HandleMissingPdfFile(dbRecord);

            dbRecord.Validated_Flag    = eMemberRegistration.Validated_Flag;
            dbRecord.Validation_Status = eMemberRegistration.Validation_Status;
            dbRecord.Notes             = eMemberRegistration.Notes;
            dbRecord.Processed_Date    = DateTime.Now;

            try {
                if (command == "Discard")
                {
                    logger.Info(" \t\t\tDISCARD clicked.");
                    dbRecord.Success_Flag     = true;
                    dbRecord.Processed_Flag   = false;
                    dbRecord.Processed_Status = "DISCARDED";
                    //await db.SaveChangesAsync();
                    EMemberRegistrationRepository.Edit(dbRecord);
                    DbContext.Commit();
                    return(RedirectToAction("Index"));
                }
                else if (command == "Hold")
                {
                    logger.Info(" \t\t\tHOLD clicked.");
                    dbRecord.Success_Flag     = false;
                    dbRecord.Processed_Flag   = false;
                    dbRecord.Processed_Status = "HOLD";
                    //await db.SaveChangesAsync();
                    EMemberRegistrationRepository.Edit(dbRecord);
                    DbContext.Commit();
                    return(RedirectToAction("Index"));
                }
                else if (command == "Confirm Manual")
                {
                    logger.Info(" \t\t\tMANUAL clicked.");
                    dbRecord.Success_Flag     = true;
                    dbRecord.Processed_Flag   = true;
                    dbRecord.Processed_Status = "MANUAL Attachment";
                    if (eMemberRegistration.Member_Union_Id != null && eMemberRegistration.Member_Union_Id.Length >= 1)
                    {
                        dbRecord.Processed_Status += " - " + eMemberRegistration.Member_Union_Id;
                    }
                    //await db.SaveChangesAsync();
                    EMemberRegistrationRepository.Edit(dbRecord);
                    DbContext.Commit();
                    return(RedirectToAction("Index"));
                }
                else //Save
                {
                    logger.Info(" \t\t\tPROCESS clicked.");
                    logger.Info(" \t\t\t\t\t Started processing record.");
                    var localPrefix = (string)System.Web.HttpContext.Current.Application["LOCAL_PREFIX"];
                    dbRecord.Member_Union_Id  = eMemberRegistration.Member_Union_Id;
                    dbRecord.Position         = eMemberRegistration.Position;
                    dbRecord.Mbr_Level1       = eMemberRegistration.Mbr_Level1;
                    dbRecord.Mbr_Level2       = eMemberRegistration.Mbr_Level2;
                    dbRecord.Mbr_Level3       = eMemberRegistration.Mbr_Level3;
                    dbRecord.Mbr_Type         = eMemberRegistration.Mbr_Type;
                    dbRecord.Employer_Name    = eMemberRegistration.Employer_Name;
                    dbRecord.UpdateAddress    = eMemberRegistration.UpdateAddress;
                    dbRecord.UpdateName       = eMemberRegistration.UpdateName;
                    dbRecord.UpdateHouse      = eMemberRegistration.UpdateHouse;
                    dbRecord.Department       = eMemberRegistration.Department;
                    dbRecord.Section          = eMemberRegistration.Section;
                    dbRecord.Craft            = eMemberRegistration.Craft;
                    dbRecord.FullPartTime     = eMemberRegistration.FullPartTime;
                    dbRecord.Notes            = eMemberRegistration.Notes;
                    dbRecord.TipActionCode    = eMemberRegistration.TipActionCode;
                    dbRecord.Processed_Status = string.Empty;
                    // Save the user entered values for later issue debugging purposes
                    db.Entry(dbRecord).State = EntityState.Modified;
                    EMemberRegistrationRepository.Edit(dbRecord);
                    DbContext.Commit();
                    logger.Info(" \t\t\t\t\t\t Current user selections saved in DB.");

                    string pdfFilePath  = Path.Combine(LocalSettingsConfig.LocalSettings.DuesCardsPath, dbRecord.Dues_Card_File_Name);
                    string duesCardPath = (string)System.Web.HttpContext.Current.Application["DUES_CARD_IMAGE_LOCATION"];
                    var    duesCardFile = Path.Combine(duesCardPath, dbRecord.Ssn.Replace("-", "") + ".pdf");

                    if (eMemberRegistration.Member_Union_Id != null && eMemberRegistration.Member_Union_Id.Length >= 1)
                    {
                        // Existing Member
                        logger.Info(" \t\t\t\t\t\t Existing Member(" + dbRecord.Member_Union_Id + ")  - Going to update in TIMSS");
                        // Validate TIP Action choice
                        if (dbRecord.Tip_Opt_In_Flag && string.IsNullOrEmpty(eMemberRegistration.TipActionCode))
                        {
                            eMemberRegistration.Validation_Status = "Please chose appropriate action for TIP data!";
                            logger.Info(" \t\t\t\t\t TIP Action is not selected.");
                            ModelState.AddModelError("", "TIP Action is not selected.");
                            return(View(eMemberRegistration));
                        }
                        TimssData.UpdateMember(dbRecord, duesCardFile);
                        dbRecord.Processed_Status = "Existing Member(" + dbRecord.Member_Union_Id + ")  - Updated DuesCard";
                        if (dbRecord.Tip_Opt_In_Flag && dbRecord.Tip_Contribution > 0 && (dbRecord.TipActionCode.ToUpper().Equals("ADD") || dbRecord.TipActionCode.ToUpper().Equals("UPDATE")))
                        {
                            dbRecord.Processed_Status += " and TIP fields";
                        }
                        else
                        {
                            dbRecord.Processed_Status += ", but  no TIP info is uploaded";
                        }
                        dbRecord.Processed_Status += "!";
                        dbRecord.Processed_Flag    = true;
                        dbRecord.Processed_Date    = DateTime.Now;
                    }
                    else
                    {
                        //New Member
                        logger.Info(" \t\t\t\t\t\t New Member - Going to create member in TIMSS");

                        bool isValidData = true;
                        if (string.IsNullOrEmpty(eMemberRegistration.Mbr_Type))
                        {
                            ModelState.AddModelError("", "Member Type should be selected.");
                            isValidData = false;
                        }
                        if (string.IsNullOrEmpty(eMemberRegistration.Mbr_Level1))
                        {
                            ModelState.AddModelError("", (string)System.Web.HttpContext.Current.Application["MBR_LEVEL1"] + " should be selected.");
                            isValidData = false;
                        }
                        if (string.IsNullOrEmpty(eMemberRegistration.Mbr_Level2))
                        {
                            ModelState.AddModelError("", (string)System.Web.HttpContext.Current.Application["MBR_LEVEL2"] + " should be selected.");
                            isValidData = false;
                        }
                        if (string.IsNullOrEmpty(eMemberRegistration.Mbr_Level3))
                        {
                            ModelState.AddModelError("", (string)System.Web.HttpContext.Current.Application["MBR_LEVEL3"] + " should be selected.");
                            isValidData = false;
                        }
                        if (isValidData)
                        {
                            dbRecord.Member_Union_Id  = TimssData.CreateNewMember(dbRecord, localPrefix, duesCardFile);
                            dbRecord.Processed_Status = "New Member(" + dbRecord.Member_Union_Id + ") ";
                            dbRecord.Processed_Flag   = true;
                            dbRecord.Processed_Date   = DateTime.Now;
                        }
                        else
                        {
                            return(View(eMemberRegistration));
                        }
                    }

                    db.Entry(dbRecord).State = EntityState.Modified;
                    if (dbRecord.Member_Union_Id != null && dbRecord.Member_Union_Id.Length >= 1)
                    {
                        logger.Info(" \t\t\t\t\t\t Success in TIMSS");
                        dbRecord.Success_Flag = true;
                        EMemberRegistrationRepository.Edit(dbRecord);
                        DbContext.Commit();
                        //Move the Pdf file to SUCCESSFUL Location
                        DirectoryInfo dir = new DirectoryInfo(Server.MapPath("~/DuesCardFiles_Success"));
                        if (!dir.Exists)
                        {
                            dir.Create();
                        }
                        System.IO.File.Move(pdfFilePath, Path.Combine(Server.MapPath("~/DuesCardFiles_Success"), dbRecord.Dues_Card_File_Name));
                        return(RedirectToAction("Index"));
                    }
                    else
                    {
                        logger.Info(" \t\t\t\t\t\t Could not process due to validation errors!");
                        //eMemberRegistration.Validation_Status = "Could not process the record.  Please contact Miki Foster.";
                        //dbRecord.Processed_Status = "Could not process the record.  Please contact Miki Foster.";
                        //await db.SaveChangesAsync();
                        //EMemberRegistrationRepository.Edit(dbRecord);
                        //DbContext.Commit();
                    }
                }
            } catch (Exception ex) {
                logger.Error("\t\t Exception: {0}\t\t\t{1} \n", ex.Message, ex.StackTrace);
                //throw (ex);
                string errMsg = string.Empty;
                if (ex.Message.Contains("Error while moving old dues card file"))
                {
                    errMsg = "E404 - Mapped drive where Dues Cards are stored is not accessible.  Check permissions on " + LocalSettingsConfig.LocalSettings.TimssDuesCardsPath;
                    //eMemberRegistration.Validation_Status = errMsg + ".  Please contact Miki Foster.";
                    dbRecord.Processed_Status = errMsg + ".  Please contact Miki Foster.";
                    errLogger.Error("while processing {0} {1}:\t{2} \n", dbRecord.First_Name, dbRecord.Last_Name, errMsg);
                }
                else if (ex.Message.Contains("Missing Membership info in TIMSS"))
                {
                    errMsg = "E301 - Member info is missing in TIMSS!  Please enter the missing member info first in TIMSS for member " + dbRecord.Member_Union_Id;
                    //eMemberRegistration.Validation_Status = "Member info is missing in TIMSS!  Please enter the missing member info first in TIMSS.";
                    dbRecord.Processed_Status = errMsg;
                    errLogger.Error("while processing {0} {1}:\t{2} \n", dbRecord.First_Name, dbRecord.Last_Name, errMsg);
                }
                else if (ex.Message.Contains("Error while updating Member Record"))
                {
                    errMsg = "E504 - Unknown error while updating the member " + dbRecord.Member_Union_Id + " in TIMSS!  Please enter Helpdesk ticket. ";
                    //eMemberRegistration.Validation_Status = "Member info is missing in TIMSS!  Please enter the missing member info first in TIMSS.";
                    dbRecord.Processed_Status = errMsg;
                    errLogger.Error("while processing {0} {1}:\t{2} \n", dbRecord.First_Name, dbRecord.Last_Name, errMsg);
                }
                else if (ex.Message.Contains("ORA-"))
                {
                    errMsg = "E500 - Oracle error  " + ex.Message.Substring(ex.Message.IndexOf("ORA-"), ex.Message.IndexOf("at OracleInternal") - ex.Message.IndexOf("ORA-"));
                    errMsg = errMsg.Replace("\"", "");
                    //eMemberRegistration.Validation_Status = errMsg + ".  Please contact Miki Foster.";
                    dbRecord.Processed_Status = errMsg + ".  Please enter Helpdesk ticket and contact Miki Foster.";
                    errLogger.Error("while processing {0} {1}:\t{2}.  Contact development team. \n", dbRecord.First_Name, dbRecord.Last_Name, errMsg);
                }
                else if (ex.Message.Contains("Could not update Dues Card file in the database"))
                {
                    errMsg = "E501 - Unknown error while updating Dues Card file in the database for member " + dbRecord.Member_Union_Id;
                    //eMemberRegistration.Validation_Status = errMsg + ".  Please contact Miki Foster.";
                    dbRecord.Processed_Status = errMsg + ".  Please enter Helpdesk ticket and contact Miki Foster.";
                    errLogger.Error("while processing {0} {1}:\t{2}.  Contact development team. \n", dbRecord.First_Name, dbRecord.Last_Name, errMsg);
                }
                else if (ex.Message.Contains("Error while copying old dues card file"))
                {
                    errMsg = "E502 - Unknown error while  copying old dues card file";
                    //eMemberRegistration.Validation_Status = errMsg + ".  Please contact Miki Foster.";
                    dbRecord.Processed_Status = errMsg + ".  Please enter Helpdesk ticket and contact Miki Foster.";
                    errLogger.Error("while processing {0} {1}:\t{2}.  Contact development team. \n", dbRecord.First_Name, dbRecord.Last_Name, errMsg);
                }
                else if (ex.Message.Contains("Error while moving old dues card file"))
                {
                    errMsg = "E503 - Unknown error while  moving old dues card file";
                    //eMemberRegistration.Validation_Status = errMsg + ".  Please contact Miki Foster.";
                    dbRecord.Processed_Status = errMsg + ".  Please enter Helpdesk ticket and contact Miki Foster.";
                    errLogger.Error("while processing {0} {1}:\t{2}.  Contact development team. \n", dbRecord.First_Name, dbRecord.Last_Name, errMsg);
                }
                else
                {
                    //eMemberRegistration.Validation_Status = "E505 - Unknown Error:  Could not process the record due to unknown error.  Please contact Miki Foster.";
                    dbRecord.Processed_Status = "E505 - Unknown Error:  Could not process the record due to unknown error.  Please enter Helpdesk ticket and contact Miki Foster.";
                    errMsg = "E505 - Unknown Error:  " + ex.Message;
                    errLogger.Error("while processing {0} {1}:\t{2}.  Contact development team. \n", dbRecord.First_Name, dbRecord.Last_Name, errMsg);
                }
                //await db.SaveChangesAsync();
                dbRecord.Processed_Flag = false;
                dbRecord.Success_Flag   = false;
                EMemberRegistrationRepository.Edit(dbRecord);
                DbContext.Commit();
            }
            eMemberRegistration = dbRecord;
            eMemberRegistration.Member_Union_Id   = null;
            eMemberRegistration.Validated_Flag    = true;
            eMemberRegistration.Validation_Status = dbRecord.Processed_Status;
            if (!string.IsNullOrEmpty(eMemberRegistration.Validation_Status))
            {
                ModelState.AddModelError("", eMemberRegistration.Validation_Status);
                //Store Model Errors so that we can store it in DB
                errLogger.Error("while processing {0} {1}:\t{2} \n", eMemberRegistration.First_Name, eMemberRegistration.Last_Name, eMemberRegistration.Validation_Status);
            }
            //ValidateInTimss(eMemberRegistration);
            // Set Comparison Codes to display
            ViewData["Error"] = eMemberRegistration.Validation_Status;
            return(View(eMemberRegistration));
            //      }
        }
Exemple #7
0
        public async Task <IHttpActionResult> Post()
        {
            EMemberRegistration model = null;

            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }

            string        pdfFilePath = ConfigurationManager.AppSettings["DuesCardsPath"];//System.Web.HttpContext.Current.Server.MapPath("~/DuesCardFiles");
            string        root        = System.Web.HttpContext.Current.Server.MapPath("~/Uploads");
            DirectoryInfo dir         = new DirectoryInfo(pdfFilePath);

            if (!dir.Exists)
            {
                dir.Create();
            }
            dir = new DirectoryInfo(root);
            if (!dir.Exists)
            {
                dir.Create();
            }
            var provider = new MultipartFormDataStreamProvider(root);

            try {
                // Read the form data.
                await Request.Content.ReadAsMultipartAsync(provider);

                if (provider.FileData.Count > 1)
                {
                    return(BadRequest("Cannot provide more than one file!"));
                }

                foreach (var key in provider.FormData.AllKeys)
                {
                    foreach (var val in provider.FormData.GetValues(key))
                    {
                        model = JsonConvert.DeserializeObject <EMemberRegistration>(val);
                        if (!string.IsNullOrEmpty(model.Gender))
                        {
                            model.Gender = model.Gender.Substring(0, 1);
                        }
                        break;
                        //Trace.WriteLine(string.Format("{0}: {1}", key, val));
                    }
                    break;
                }
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                foreach (MultipartFileData fileData in provider.FileData)
                {
                    if (string.IsNullOrEmpty(fileData.Headers.ContentDisposition.FileName))
                    {
                        return(BadRequest("This request is not properly formatted"));
                    }
                    string fileName = fileData.Headers.ContentDisposition.FileName;
                    if (fileName.StartsWith("\"") && fileName.EndsWith("\""))
                    {
                        fileName = fileName.Trim('"');
                    }
                    if (fileName.Contains(@"/") || fileName.Contains(@"\"))
                    {
                        fileName = Path.GetFileName(fileName);
                    }
                    var duesCardFile = Path.Combine(pdfFilePath, fileName);
                    File.Move(fileData.LocalFileName, duesCardFile);
                    model.Dues_Card_File_Name = fileName;
                    using (var fStream = File.OpenRead(duesCardFile)) {
                        byte[] contents = new byte[fStream.Length];
                        fStream.Read(contents, 0, (int)fStream.Length);
                        fStream.Close();
                        model.Dues_Card_Image = contents;
                    }
                }
            } catch (System.Exception e) {
                return(BadRequest(e.Message));
            }


            EMemberRegistrationRepository.Add(model);
            DbContext.Commit();

            var viewModel = Mapper.Map <EMemberRegistrationModel>(model);

            //return Ok();
            return(CreatedAtRoute("", new { id = viewModel.Id }, viewModel));
        }