public ServiceProviderEmployeeMappingModel SaveEmployeeAccordingToServiceProvider(ServiceProviderEmployeeMappingModel model) { //unitOfWork.StartTransaction(); ServiceProviderEmployeeMappingRepository repo = new ServiceProviderEmployeeMappingRepository(unitOfWork); ServicePoviderEmployeeMapping serviceProviderEmployeeMapping = new ServicePoviderEmployeeMapping(); AutoMapper.Mapper.Map(model, serviceProviderEmployeeMapping); repo.Insert(serviceProviderEmployeeMapping); //unitOfWork.Commit(); AutoMapper.Mapper.Map(serviceProviderEmployeeMapping, model); return model; }
public async Task<IHttpActionResult> RegisterServiceProviderAsIndividual(EmployeeBindingModel employeeModel) { //using (var dataContext = new URFXDbContext()) //{ // TransactionScope transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled); // { try { if (!ModelState.IsValid) { return BadRequest(ModelState); } var user = new ApplicationUser() { UserName = employeeModel.Email, Email = employeeModel.Email, PhoneNumber = employeeModel.PhoneNumber, DeviceType = employeeModel.DeviceType, DeviceToken = employeeModel.DeviceToken }; IdentityResult result = await UserManager.CreateAsync(user, employeeModel.Password); if (!result.Succeeded) { // transaction.Dispose(); ////UserManager.Delete(user); return GetErrorResult(result); } else { IdentityResult resultRoleCreated = await UserManager.AddToRoleAsync(user.Id, URFXRoles.ServiceProvider.ToString()); if (!resultRoleCreated.Succeeded) { // transaction.Dispose(); //UserManager.Delete(user); return GetErrorResult(resultRoleCreated); } else { try { //save service provider RegisterServiceProviderBindingModel serviceProviderBindingModel = new RegisterServiceProviderBindingModel(); ServiceProviderModel serviceProviderModel = new ServiceProviderModel(); serviceProviderBindingModel.ServiceProviderId = user.Id; serviceProviderBindingModel.StartDate = DateTime.UtcNow; serviceProviderBindingModel.CompanyName = employeeModel.FirstName + " " + employeeModel.LastName; serviceProviderBindingModel.Description = employeeModel.Description; serviceProviderBindingModel.GeneralManagerName = employeeModel.FirstName + " " + employeeModel.LastName; serviceProviderBindingModel.ServiceProviderType = ServiceProviderType.Individual; AutoMapper.Mapper.Map(serviceProviderBindingModel, serviceProviderModel); serviceProviderModel = serviceProviderService.SaveServiceProvider(serviceProviderModel); employeeModel.EmployeeId = user.Id; EmployeeModel employeeModelEntity = new EmployeeModel(); AutoMapper.Mapper.Map(employeeModel, employeeModelEntity); employeeModelEntity = employeeService.SaveEmployee(employeeModelEntity); AutoMapper.Mapper.Map(employeeModelEntity, employeeModel); //ServiceProviderEmployee Mapping ServiceProviderEmployeeMappingModel serviceProviderEmployeeMappingModel = new ServiceProviderEmployeeMappingModel(); serviceProviderEmployeeMappingModel.EmployeeId = employeeModel.EmployeeId; if (employeeModel.ServiceProviderId != null) { serviceProviderEmployeeMappingModel.ServiceProviderId = employeeModel.ServiceProviderId; } else { serviceProviderEmployeeMappingModel.ServiceProviderId = employeeModel.EmployeeId; } serviceProviderEmployeeMappingModel = serviceProviderEmployeeMappingService.SaveEmployeeAccordingToServiceProvider(serviceProviderEmployeeMappingModel); //send email var Subject = Utility.Constants.CONFIRMATION_SUBJECT; var code = UserManager.GenerateEmailConfirmationToken(user.Id); var scheme = HttpContext.Current.Request.Url.Scheme; var host = HttpContext.Current.Request.Url.Host; var port = HttpContext.Current.Request.Url.Port; string language = "en"; var cookie = HttpContext.Current.Request.Cookies.Get("APPLICATION_LANGUAGE"); if (cookie != null) language = cookie.Value; string exactPath; if (language == "en") { #if DEBUG exactPath = scheme + "://" + host + port + "/Content/URFXTheme/images/logo.png"; #else exactPath = scheme + "://" + host + "/Content/URFXTheme/images/logo.png"; #endif } else { #if DEBUG exactPath = scheme + "://" + host + port + "/Content/URFXTheme/images/arabic-logo.png"; #else exactPath = scheme + "://" + host + "/Content/URFXTheme/images/arabic-logo.png"; #endif } #if DEBUG var link = scheme + "://" + host + port + "/App/#/confirmemail/" + user.Id + ""; #else var link = scheme + "://" + host + "/#/confirmemail/" + user.Id + ""; #endif var Link = "<a href='" + link + "'>" + link + "</a>"; string text = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath(Utility.Constants.CONFIRMATION_EMAIL_PATH)); String Body = ""; Body = String.Format(text, user.UserName, Link, exactPath); try { // await service.SendAsync(message); await UserManager.SendEmailAsync(user.Id, Subject, Body); } catch (Exception ex) { // transaction.Dispose(); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } //transaction.Complete(); } catch (Exception ex) { // transaction.Dispose(); Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } } } return Json(employeeModel); // return Ok("{\"response\":" + Json(employeeModel) + "}"); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } // } //} }
public async Task<IHttpActionResult> PostEmployee() { try { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var root = HttpContext.Current.Server.MapPath(Utility.Constants.BASE_FILE_UPLOAD_PATH); Directory.CreateDirectory(root); var provider = new MultipartFormDataStreamProvider(root); var resultModel = await Request.Content.ReadAsMultipartAsync(provider); if (resultModel.FormData["model"] == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } var model = resultModel.FormData["model"]; EmployeeBindingModel employeeModel = new EmployeeBindingModel(); employeeModel = JsonConvert.DeserializeObject<EmployeeBindingModel>(model); if (!ModelState.IsValid) { return BadRequest(ModelState); } var user = new ApplicationUser() { UserName = employeeModel.Email, Email = employeeModel.Email, PhoneNumber = employeeModel.PhoneNumber, DeviceType = employeeModel.DeviceType, DeviceToken = employeeModel.DeviceToken }; IdentityResult result = await UserManager.CreateAsync(user, employeeModel.Password); if (!result.Succeeded) { //UserManager.Delete(user); return GetErrorResult(result); } else { IdentityResult resultRoleCreated = await UserManager.AddToRoleAsync(user.Id, URFXRoles.Employee.ToString()); if (!resultRoleCreated.Succeeded) { //UserManager.Delete(user); return GetErrorResult(resultRoleCreated); } else { try { //Save employee employeeModel.EmployeeId = user.Id; EmployeeModel employeeModelEntity = new EmployeeModel(); AutoMapper.Mapper.Map(employeeModel, employeeModelEntity); employeeModelEntity = employeeService.SaveEmployee(employeeModelEntity); AutoMapper.Mapper.Map(employeeModelEntity, employeeModel); //ServiceProviderEmployee Mapping ServiceProviderEmployeeMappingModel serviceProviderEmployeeMappingModel = new ServiceProviderEmployeeMappingModel(); serviceProviderEmployeeMappingModel.EmployeeId = employeeModel.EmployeeId; if (employeeModel.ServiceProviderId != null) { serviceProviderEmployeeMappingModel.ServiceProviderId = employeeModel.ServiceProviderId; } else { serviceProviderEmployeeMappingModel.ServiceProviderId = User.Identity.GetUserId(); } ServiceProviderModel serviceProviderModel = serviceProviderService.GetServiceProviderById(serviceProviderEmployeeMappingModel.ServiceProviderId); if (serviceProviderModel.CompanyName != null) serviceProviderEmployeeMappingModel = serviceProviderEmployeeMappingService.SaveEmployeeAccordingToServiceProvider(serviceProviderEmployeeMappingModel); var Subject = Utility.Constants.CONFIRMATION_SUBJECT; var code = UserManager.GenerateEmailConfirmationToken(user.Id); var scheme = HttpContext.Current.Request.Url.Scheme; var host = HttpContext.Current.Request.Url.Host; var port = HttpContext.Current.Request.Url.Port; //var link = scheme + "//" + host + port + "/#/confirmemail"; //var Link = "<a href='" + link + "/" + user.Id + "'></a>"; string language = "en"; var cookie = HttpContext.Current.Request.Cookies.Get("APPLICATION_LANGUAGE"); if (cookie != null) language = cookie.Value; string exactPath; if (language == "en") { // exactPath = scheme + "://" + host + port + "/Content/URFXTheme/images/logo.png"; exactPath = scheme + "://" + host + "/Content/URFXTheme/images/logo.png"; } else { //exactPath = scheme + "://" + host + port + "/Content/URFXTheme/images/arabic-logo.png"; exactPath = scheme + "://" + host + "/Content/URFXTheme/images/arabic-logo.png"; } string text = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath(Utility.Constants.EMPLOYEE_USERNAME_PASSWORD_PATH)); String Body = ""; Body = String.Format(text, user.UserName, employeeModel.Password, exactPath); try { // await service.SendAsync(message); await UserManager.SendEmailAsync(user.Id, Subject, Body); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } } } return Ok(); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); return BadRequest(ex.Message); } }