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;
 }
Ejemplo n.º 2
0
        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);
            }

            //    }
            //}

        }
Ejemplo n.º 3
0
        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);
            }



        }