public ServiceProviderModel GetServiceProviderById(string serviceProviderId)
 {
     //unitOfWork.StartTransaction();
     ServiceProviderRepository repo = new ServiceProviderRepository(unitOfWork);
     ServiceProviderModel serviceProviderModel = new ServiceProviderModel();
     ServiceProvider serviceProvider = new ServiceProvider();
     AutoMapper.Mapper.Map(serviceProviderModel, serviceProvider);
     serviceProvider = repo.GetAll().Where(x => x.ServiceProviderId == serviceProviderId).FirstOrDefault();
     //unitOfWork.Commit();
     AutoMapper.Mapper.Map(serviceProvider, serviceProviderModel);
     return serviceProviderModel;
 }
 public ServiceProviderModel SaveServiceProvider(ServiceProviderModel model)
 {
     //unitOfWork.StartTransaction();
     ServiceProviderRepository repo = new ServiceProviderRepository(unitOfWork);
     ServiceProvider serviceProvider = new ServiceProvider();
     AutoMapper.Mapper.Map(model, serviceProvider);
     repo.Insert(serviceProvider);
     //unitOfWork.Commit();
     AutoMapper.Mapper.Map(serviceProvider, model);
     return model;
 }
 public ServiceProviderModel UpadteServiceProvider(ServiceProviderModel model)
 {
     //unitOfWork.StartTransaction();
     ServiceProviderRepository repo = new ServiceProviderRepository(unitOfWork);
     ServiceProvider serviceProvider = new ServiceProvider();
     serviceProvider = repo.GetAll().Where(x => x.ServiceProviderId == model.ServiceProviderId).SingleOrDefault();
     AutoMapper.Mapper.Map(model, serviceProvider);
     //serviceProvider.IsActive = model.IsActive;
     repo.Update(serviceProvider);
     //unitOfWork.Commit();
     AutoMapper.Mapper.Map(serviceProvider, model);
     return model;
 }
Example #4
0
        public IHttpActionResult GetTranscationHistoryByServiceProviderId(string Id)
        {
            //get job detail
            FinanceBindingModel financeBindingModel = new FinanceBindingModel();
            //get deatils for service provider
            ServiceProviderModel serviceProviderModel = new ServiceProviderModel();
            serviceProviderModel = serviceProviderService.GetServiceProviderById(Id);
            financeBindingModel.ServiceProviderName = serviceProviderModel.CompanyName;
            List<JobBindingModel> jobBindingModel = new List<JobBindingModel>();
            List<JobModel> jobModel = new List<JobModel>();
            jobModel = jobService.GetJobListByServiceProviderIdWithClient(Id);
            AutoMapper.Mapper.Map(jobModel, jobBindingModel);
            //get transcation history
            jobBindingModel.ForEach(x =>
            {
                financeBindingModel.Description = x.Description;
                x.TransactionHistoryModel = transactionHistoryService.GetTransactionHistoryListByJobId(x.JobId);
                x.Email = x.TransactionHistoryModel.CustomerEmail;
                x.Amount = x.TransactionHistoryModel.Amount;
                x.PaymentType = x.TransactionHistoryModel.URFXPaymentType;
                x.ClientName = x.Client.FirstName +' '+ x.Client.LastName;
                x.TransactionDate = x.TransactionHistoryModel.CreatedDate;
                financeBindingModel.TotalEarnedAmount += x.TransactionHistoryModel.Amount;
            });
            financeBindingModel.JobModel = jobBindingModel;
            financeBindingModel.NumberOfJobs = jobBindingModel.Count();

            return Ok(financeBindingModel);
        }
Example #5
0
        public ResponseMessage Paging(PagingModel model)
        {
            ResponseMessage responseMessage = new ResponseMessage();
            List<TransactionHistoryModel> transactionHistoryModel = new List<TransactionHistoryModel>();
            transactionHistoryModel = transactionHistoryService.Paging(model);
            responseMessage.totalRecords = transactionHistoryModel.Count();
            transactionHistoryModel = transactionHistoryModel.OrderBy(x => x.CustomerEmail).Skip((model.CurrentPageIndex - 1) * model.PageSize).Take(model.PageSize).ToList();
            transactionHistoryModel.ForEach(x => {
                JobModel jobModel = new JobModel();
                ServiceProviderModel serviceProviderModel = new ServiceProviderModel();
                if (x.JobId > 0)
                {

                    jobModel = jobService.GetJobById(x.JobId);
                }
                serviceProviderModel = serviceProviderService.GetServiceProviderById(jobModel.ServiceProviderId);
                x.ServiceProviderName = serviceProviderModel.CompanyName;
            });
            responseMessage.data = transactionHistoryModel;

            return responseMessage;
        }
Example #6
0
        public IHttpActionResult DeleteEmployee(string id)
        {
            try
            {
                EmployeeModel employeeModel = new EmployeeModel();
                if (employeeModel == null)
                {
                    return NotFound();
                }
                List<UserLocationModel> model = new List<UserLocationModel>();
                model = userLocationService.FindLocationListById(id);
                foreach (var item in model)
                {
                    userLocationService.DeleteUserLocation(item.UserLocationId);
                }

                serviceProviderEmployeeMappingService.DeleteServiceProviderEmployeeMapping(id);
                //delete Car Type of employee
                List<CarEmployeeMappingModel> carEmployeeMappingModel = new List<CarEmployeeMappingModel>();
                carEmployeeMappingModel = carEmployeeMappingService.GetCarEmployeeMappingListByEmployeeId(id);
                carEmployeeMappingModel.ForEach(x =>
                {
                    carEmployeeMappingService.DeleteCarEmployeeMapping(x.CarEmployeeMappingId);
                });

                employeeService.DeleteEmployee(id);
                ServiceProviderModel serviceProvider = new ServiceProviderModel();
                serviceProvider = serviceProviderService.GetServiceProviderById(id);
                if (serviceProvider.ServiceProviderId != null)
                {

                    //delete service provider service mapping
                    List<ServiceProviderServiceMappingModel> serviceProviderMappingModel = new List<ServiceProviderServiceMappingModel>();
                    serviceProviderMappingModel = serviceProviderServiceMappingService.FindServiceByUserId(id);
                    foreach (var item in serviceProviderMappingModel)
                    {
                        serviceProviderServiceMappingService.DeleteServiceProviderServiceMapping(item.Id);
                    }
                    //Delete service provider employee mapping
                    List<ServiceProviderEmployeeMappingModel> serviceProviderEmployeeMappingModel = new List<ServiceProviderEmployeeMappingModel>();
                    serviceProviderEmployeeMappingModel = serviceProviderEmployeeMappingService.GetEmployeeByServiceProviderId(id);
                    foreach (var item in serviceProviderEmployeeMappingModel)
                    {
                        serviceProviderEmployeeMappingService.DeleteServiceProviderEmployeeMapping(item.EmployeeId);
                    }
                    //Delete service provider
                    serviceProviderService.DeleteServiceProvider(id);

                }
                ApplicationUser user = UserManager.FindById(id);

                IdentityResult result = UserManager.Delete(user);
                if (!result.Succeeded)
                {
                    return GetErrorResult(result);
                }
            }
            catch (Exception ex)
            {
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                return BadRequest(ex.Message);
            }
            return Ok();
        }
Example #7
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);
            }

            //    }
            //}

        }
Example #8
0
        public IHttpActionResult RejectJob(string userId, int jobId, string comment)
        {
            JobBindingModel jobBindingModel = new JobBindingModel();
            try
            {

                //Get job by jobId

                JobModel jobModel = new JobModel();
                AutoMapper.Mapper.Map(jobBindingModel, jobModel);
                jobModel = jobService.GetJobById(jobId);
                jobModel.Status = JobStatus.Rejected;
                jobModel.Comment = comment;
                //Check for individual
                ServiceProviderModel serviceProviderModel = new ServiceProviderModel();
                serviceProviderModel = serviceProviderService.GetServiceProviderById(userId);
                if (serviceProviderModel.ServiceProviderType == ServiceProviderType.Individual)
                {
                    jobModel.EmployeeId = null;
                }
                jobModel = jobService.UpadteJob(jobModel);
                AutoMapper.Mapper.Map(jobModel, jobBindingModel);
                //remove job from schedule table
                EmployeeScheduleModel employeeScheduleModel = new EmployeeScheduleModel();
                employeeScheduleModel = employeeScheduleService.GetEmployeesScheduleByJobId(jobId);
                employeeScheduleService.DeleteEmployeeSchedule(employeeScheduleModel.Id);
                //Get client for job
                ApplicationUser user = UserManager.FindById(jobModel.ClientId);
                if (user != null)
                {
                    if (user.DeviceType == Utility.Constants.DEVICE_TYPE_ANDROID)
                    {
                        string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.userId=" + userId + "&data.jobId=" + jobId + "&data.type=" + Utility.Constants.JOB_REJECT_TYPE + "&data.message=" + Utility.Constants.MESSAGE_FOR_JOB_REJECT + "&data.time=" + System.DateTime.Now.ToString() + "&registration_id=" + user.DeviceToken + "";
                        var response = sendNotificationService.SendNotificationForAndroid(postData);
                    }
                    else if (user.DeviceType == Utility.Constants.DEVICE_TYPE_IOS)
                    {
                        string payload = "{\"aps\":{\"alert\":\"" + "Hi, " + Utility.Constants.MESSAGE_FOR_JOB_REJECT + "" + "\",\"badge\":1,\"sound\":\"default\"},\"JobId\":" + jobId + ",\"userId\":\"" + userId + "\",\"type\":\"" + Utility.Constants.JOB_REJECT_TYPE + "\"}";
                        sendNotificationService.SendNotificationForIOS(user.DeviceToken, payload);
                    }
                }
            }
            catch (Exception ex)
            {
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                return BadRequest(ex.Message);
            }
            return Json(jobBindingModel);
        }
Example #9
0
        public async Task<IHttpActionResult> PutEmployee()
        {

            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 employeeBindingModel = new EmployeeBindingModel();
                employeeBindingModel = JsonConvert.DeserializeObject<EmployeeBindingModel>(model);

                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }

                else
                {

                    EmployeeModel employeeModelForCheckRecord = new EmployeeModel();
                    employeeModelForCheckRecord = employeeService.GetEmployeeById(employeeBindingModel.EmployeeId);

                    if (resultModel.FileData.Count > 0)
                    {
                        string fileName;

                        if (HttpContext.Current.Request.Files != null)
                        {
                            for (var i = 0; i < resultModel.FileData.Count; i++)
                            {
                                var file = HttpContext.Current.Request.Files[i];
                                fileName = file.FileName;


                                if (i == 0)
                                {

                                    file.SaveAs(Path.Combine(root, Utility.Constants.EMPLOYEE_PROFILE_PATH, fileName));
                                    employeeBindingModel.ProfileImage = fileName;
                                }
                                else
                                {
                                    file.SaveAs(Path.Combine(root, Utility.Constants.NATIONAL_ID_PATH, fileName));
                                    employeeBindingModel.NationalIdAndIqamaNumber = fileName;
                                }

                            }

                        }


                    }
                    if (employeeBindingModel.ProfileImage == null)
                    {
                        employeeBindingModel.ProfileImage = employeeModelForCheckRecord.ProfileImage;
                    }
                    if (employeeBindingModel.NationalIdAndIqamaNumber == null)
                    {
                        employeeBindingModel.NationalIdAndIqamaNumber = employeeModelForCheckRecord.NationalIdAndIqamaNumber;
                    }
                    //if (employeeBindingModel.IqamaNumber == null)
                    //{
                    //    employeeBindingModel.IqamaNumber = employeeModelForCheckRecord.IqamaNumber;
                    //}
                    try
                    {
                        //Update employee
                        EmployeeModel employeeModelEntity = new EmployeeModel();
                        AutoMapper.Mapper.Map(employeeBindingModel, employeeModelEntity);
                        employeeModelEntity = employeeService.UpadteEmployee(employeeModelEntity);
                        AutoMapper.Mapper.Map(employeeModelEntity, employeeBindingModel);
                        //Add Car type for Employee
                        if (employeeBindingModel.CarTypeId != 0)
                        {
                            CarEmployeeMappingModel carEmployeeMappingModel = new CarEmployeeMappingModel();
                            carEmployeeMappingModel.CarTypeId = employeeBindingModel.CarTypeId;
                            carEmployeeMappingModel.EmployeeId = employeeBindingModel.EmployeeId;
                            CarEmployeeMappingModel carEmployeeMappingModelCheck = new CarEmployeeMappingModel();
                            carEmployeeMappingModelCheck = carEmployeeMappingService.GetCarEmployeeMappingByEmployeeId(carEmployeeMappingModel.EmployeeId);
                            carEmployeeMappingModelCheck.CarTypeId = employeeBindingModel.CarTypeId;
                            carEmployeeMappingModelCheck.EmployeeId = employeeBindingModel.EmployeeId;
                            if (carEmployeeMappingModelCheck.CarEmployeeMappingId == 0)
                            {
                                carEmployeeMappingModel = carEmployeeMappingService.SaveCarEmployeeMapping(carEmployeeMappingModelCheck);
                            }
                            else
                            {
                                carEmployeeMappingModel = carEmployeeMappingService.UpadteCarEmployeeMapping(carEmployeeMappingModelCheck);
                            }
                        }


                        //save location for employee
                        var location = resultModel.FormData["LocationModel"];
                        UserLocationModel locationModel = new UserLocationModel();
                        UserLocationModel userlocationModel = new UserLocationModel();
                        locationModel = JsonConvert.DeserializeObject<UserLocationModel>(location);
                        locationModel.UserId = employeeBindingModel.EmployeeId;
                        locationModel.DistrictId = 1;
                        bool Exists;
                        Exists = userLocationService.CheckExistance(locationModel.UserId);
                        if (!Exists && locationModel.CityId != 0)
                        {
                            userLocationService.InsertUserLocation(locationModel);
                        }
                        else if (Exists)
                        {
                            userlocationModel = userLocationService.FindLocationById(locationModel.UserId);
                            locationModel.UserLocationId = userlocationModel.UserLocationId;
                            userLocationService.UpadteUserLocation(locationModel);
                        }
                        //check service provider as individual and update service provider
                        IndividualBindingModel individualBindingModel = new IndividualBindingModel();
                        RegisterServiceProviderBindingModel serviceProviderBindingModel = new RegisterServiceProviderBindingModel();
                        ServiceProviderModel serviceProvider = new ServiceProviderModel();
                        serviceProvider = serviceProviderService.GetServiceProviderById(employeeBindingModel.EmployeeId);
                        if (serviceProvider != null && serviceProvider.ServiceProviderType == ServiceProviderType.Individual)
                        {

                            serviceProvider.CompanyLogoPath = employeeBindingModel.ProfileImage;
                            serviceProvider.RegistrationCertificatePath = employeeBindingModel.NationalIdAndIqamaNumber;
                            serviceProvider.Description = employeeBindingModel.Description;

                            serviceProvider = serviceProviderService.UpadteServiceProvider(serviceProvider);
                        }
                        var user = await UserManager.FindByIdAsync(employeeBindingModel.EmployeeId);
                        if (user != null)
                        {
                            if (user.Email != employeeBindingModel.Email || user.PhoneNumber != employeeBindingModel.PhoneNumber)
                            {
                                user.Email = employeeBindingModel.Email;
                                user.PhoneNumber = employeeBindingModel.PhoneNumber;
                                IdentityResult result = await UserManager.UpdateAsync(user);
                            }
                        }

                    }
                    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);
            }
        }
Example #10
0
        public async Task<IHttpActionResult> CreateJob()
        {
            //using (var dataContext = new URFXDbContext())
            //{
            //    TransactionScope transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled);
            //    {
            TaskModel taskModel = new TaskModel();
            JobModel jobModel = new JobModel();
            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 result = resultModel.FormData["model"];
                var model = result.Substring(1, result.Length - 2);
                List<JobBindingModel> JobBindingModelList = new List<JobBindingModel>();

                taskModel = JsonConvert.DeserializeObject<TaskModel>(model);
                List<JobModel> jobModelList = new List<JobModel>();
                AutoMapper.Mapper.Map(JobBindingModelList, jobModelList);
                string fileName;
                if (taskModel.StartDate >= DateTime.UtcNow)
                {
                    //Check for individual
                    ServiceProviderModel serviceProviderModel = new ServiceProviderModel();
                    serviceProviderModel = serviceProviderService.GetServiceProviderById(taskModel.ServiceProviderId);
                    if (serviceProviderModel.ServiceProviderType == ServiceProviderType.Individual)
                    {
                        jobModel.EmployeeId = taskModel.ServiceProviderId;
                    }
                    try
                    {
                        //set status and details of job
                        jobModel.Status = JobStatus.New;
                        //jobModel.CreatedDate = DateTime.UtcNow;
                        jobModel.StartDate = taskModel.StartDate;
                        jobModel.EndDate = taskModel.EndDate;
                        jobModel.Description = taskModel.Description;
                        jobModel.ServiceProviderId = taskModel.ServiceProviderId;
                        jobModel.ClientId = taskModel.ClientId;
                        jobModel.Quantity = taskModel.Quantity;
                        jobModel.Comments = taskModel.Comments;
                        jobModel.JobAddress = taskModel.JobAddress;
                        jobModel.Latitude = taskModel.Latitude;
                        jobModel.Longitude = taskModel.Longitude;
                        jobModel.Cost = taskModel.Cost;
                        //save job
                        jobModel = jobService.SaveJob(jobModel);
                        //Get transcation history for job
                        //TransactionHistoryModel historyModel = new TransactionHistoryModel();
                        //historyModel = transactionHistoryService.FindTransactionHistoryByMerchantRegrence(taskModel.MerchantReference);
                        //historyModel.JobId = jobModel.JobId;
                        //transactionHistoryService.UpdateTransactionHistory(historyModel);
                        //Job service Mapping
                        JobServiceMappingModel jobServiceMappingModel = new JobServiceMappingModel();
                        JobServicePictureMappingModel jobServicePictureMappingModel = new JobServicePictureMappingModel();
                        taskModel.SubTaskList.ForEach(x =>
                        {
                            jobServiceMappingModel.Quantity = x.Quantity;
                            jobServiceMappingModel.JobId = jobModel.JobId;
                            jobServiceMappingModel.Comments = x.Comments;
                            jobServiceMappingModel.ServiceId = x.ServiceId;
                            jobServiceMappingModel.Description = x.Description;
                            jobServiceMappingModel = jobServiceMappingService.SaveJobServiceMapping(jobServiceMappingModel);
                            jobServicePictureMappingModel.JobServiceMappingId = jobServiceMappingModel.JobServiceMappingId;
                            if (HttpContext.Current.Request.Files != null)
                            {
                                for (var i = 0; i < HttpContext.Current.Request.Files.Count; i++)
                                {
                                    var file = HttpContext.Current.Request.Files[i];
                                    fileName = file.FileName;
                                    var splittedFileName = fileName.Split('$');
                                    if (splittedFileName[0] == x.Description)
                                    {
                                        file.SaveAs(Path.Combine(root, Utility.Constants.JOB_SERVICE_IMAGES_PATH, splittedFileName[1]));
                                        jobServicePictureMappingModel.ImagePath = splittedFileName[1];
                                        jobServicePictureMappingModel = jobServicePictruesMappingService.SaveJobServicePictureMapping(jobServicePictureMappingModel);
                                    }
                                }
                            }

                        });
                        //  transaction.Complete();
                    }
                    catch (Exception ex)
                    {
                        //   transaction.Dispose();
                        Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                        return BadRequest(ex.Message);
                    }

                }
                else
                {
                    return BadRequest("Job date is not valid");
                }
            }
            
            catch (Exception ex)
            {
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                return BadRequest(ex.Message);
            }
        
            //    }
            //}
            return Ok(jobModel);
        }
Example #11
0
        public IHttpActionResult GetComplaintByServiceProviderId(string serviceProviderId)
        {
            List<ComplaintBindingModel> complaintBindingModel = new List<ComplaintBindingModel>();
            List<ComplaintModel> complaintModel = new List<ComplaintModel>();
               // AutoMapper.Mapper.Map(jobBindingModel, jobModel);
            complaintModel = complaintService.GetComplaintListByServiceProviderId(serviceProviderId);
            AutoMapper.Mapper.Map(complaintModel, complaintBindingModel);
            EmployeeModel employeeModel = new EmployeeModel();
            ClientModel clientModel = new ClientModel();
            ServiceProviderModel ServiceProviderModel = new ServiceProviderModel();
            JobModel jobModel = new JobModel();
            complaintBindingModel.ForEach(x => {
                jobModel = jobService.GetJobById(x.JobId);
                employeeModel = employeeService.GetEmployeeById(x.EmployeeId);
                x.EmployeeName = employeeModel.FirstName;
                clientModel = clientService.GetClientById(x.ClientId);
                x.ClientName = clientModel.FirstName;
                ServiceProviderModel = serviceProviderService.GetServiceProviderById(x.ServiceProviderId);
                x.ServiceProviderName = ServiceProviderModel.CompanyName;
                x.JobAddress = jobModel.JobAddress;
                x.JobDescription = jobModel.Description;
                x.Description = x.Description;
                ApplicationUser user = UserManager.FindById(x.ClientId);
                if (user != null)
                {
                    x.ClientPhoneNumber = user.PhoneNumber;
                }

            });
            return Ok(complaintBindingModel);
        }
Example #12
0
        public UserInfoViewModel GetUserInfo()
        {
            ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);

            var id = User.Identity.GetUserId();
            var role = UserManager.GetRoles(id);
            // UserManager.FindByIdAsync(id);
            ClientModel clientDetail = new ClientModel();
            ServiceProviderModel serviceProviderModel = new ServiceProviderModel();
            if (role[0].ToString() == URFXRoles.Client.ToString())
            {
                clientDetail = clientService.GetClientById(id);
            }
            else
            {
                serviceProviderModel = serviceProviderService.GetServiceProviderById(id);
            }
            return new UserInfoViewModel
            {
                Email = UserManager.FindByName(User.Identity.GetUserName()).Email,
                HasRegistered = externalLogin == null,
                LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null,
                UserName = User.Identity.GetUserName(),
                Client = clientDetail,
                ServiceProvider = serviceProviderModel


            };
        }
Example #13
0
        public async Task<IHttpActionResult> RegisterServiceProvider()
        {
            //using (var dataContext = new URFXDbContext())
            //{
            //    TransactionScope transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled);
            //    {
            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 plan = resultModel.FormData["planModel"];
                PlanServiceProviderModel planModel = new PlanServiceProviderModel();
                planModel = JsonConvert.DeserializeObject<PlanServiceProviderModel>(plan);
                var location = resultModel.FormData["LocationModel"];
                UserLocationModel locationModel = new UserLocationModel();
                locationModel = JsonConvert.DeserializeObject<UserLocationModel>(location);
                //var services = resultModel.FormData["services"];
                //string[] serviceIds = { string.Empty };
                //List<string> serviceIdList = new List<string>();
                //if (!string.IsNullOrEmpty(services))
                //{
                //    //serviceIds = services.Substring(1, services.Length - 1).Split(',');
                //    serviceIdList = new List<string>(services.Substring(1, services.Length - 2).Split(','));
                //    //serviceIdList.AddRange(serviceIds);
                //}
                var model = resultModel.FormData["model"];

                RegisterServiceProviderBindingModel serviceProviderModel = new RegisterServiceProviderBindingModel();
                serviceProviderModel = JsonConvert.DeserializeObject<RegisterServiceProviderBindingModel>(model);

                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }

                var user = new ApplicationUser() { UserName = serviceProviderModel.Email, Email = serviceProviderModel.Email, PhoneNumber = serviceProviderModel.PhoneNumber };

                IdentityResult result = await UserManager.CreateAsync(user, serviceProviderModel.Password);

                if (!result.Succeeded)
                {
                    // transaction.Dispose();
                    //UserManager.Delete(user);
                    return BadRequest("{\"status\" : false, \"message\" : \"Email id is already used\"}");
                }

                else
                {
                    serviceProviderModel.ServiceProviderId = user.Id;
                    serviceProviderModel.StartDate = DateTime.UtcNow;
                    IdentityResult resultRoleCreated = await UserManager.AddToRoleAsync(user.Id, URFXRoles.ServiceProvider.ToString());
                    if (!resultRoleCreated.Succeeded)
                    {
                        //  transaction.Dispose();
                        //UserManager.Delete(user);
                        return GetErrorResult(resultRoleCreated);
                    }
                    else
                    {
                        try
                        {
                            if (resultModel.FileData.Count > 0)
                            {
                                string fileName;

                                if (HttpContext.Current.Request.Files != null)
                                {
                                    for (var i = 0; i < resultModel.FileData.Count; i++)
                                    {
                                        var file = HttpContext.Current.Request.Files[i];
                                        fileName = file.FileName; 
                                        //// Load image.
                                        //Image image = Image.FromStream(file.InputStream);
                                        
                                        //// Compute thumbnail size.
                                        //Size thumbnailSize = GetThumbnailSize(image);
                                         

                                        if (i == 0)
                                        {
                                            file.SaveAs(Path.Combine(root, Utility.Constants.REGISTRATION_CERTIFICATE_PATH, fileName));
                                            serviceProviderModel.RegistrationCertificatePath = fileName;
                                            //var thumbnails= Guid.NewGuid() + ".jpg";
                                            // Get thumbnail.
                                            //Image thumbnail = image.GetThumbnailImage(thumbnailSize.Width,
                                            //    thumbnailSize.Height, null, IntPtr.Zero);
                                            //thumbnail.Save(Path.Combine(root, Utility.Constants.THUMBNAILSIMAGES, thumbnails));
                                        }
                                        else
                                        {
                                            file.SaveAs(Path.Combine(root, Utility.Constants.GOSI_CERTIFICATE_PATH, fileName));
                                            serviceProviderModel.GosiCertificatePath = fileName;
                                            //var thumbnails = Guid.NewGuid() + ".jpg";
                                            // Get thumbnail.
                                            //Image thumbnail = image.GetThumbnailImage(thumbnailSize.Width,
                                            //    thumbnailSize.Height, null, IntPtr.Zero);
                                            //thumbnail.Save(Path.Combine(root, Utility.Constants.THUMBNAILSIMAGES, thumbnails));
                                        }

                                    }

                                }

                            }
                            if (locationModel.CityId != 0)
                            {
                                locationModel.UserId = user.Id;
                                locationModel.DistrictId = 1;
                                userLocationService.InsertUserLocation(locationModel);
                            }
                            ServiceProviderModel serviceProviderModelEntity = new ServiceProviderModel();
                            AutoMapper.Mapper.Map(serviceProviderModel, serviceProviderModelEntity);
                            serviceProviderModelEntity = serviceProviderService.SaveServiceProvider(serviceProviderModelEntity);

                            AutoMapper.Mapper.Map(serviceProviderModelEntity, serviceProviderModel);
                            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 > 0 ? ":" + 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
                            }
                            //var exactPath = scheme + "://" + host + "/Content/URFXTheme/images/logo.png";
#if DEBUG
                            var link = scheme + "://" + host + port + "/App/#/confirmemail/" + user.Id + "";
#else
                             var link = scheme + "://" + host + "/App/#/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 Ok();
            }
            catch (Exception ex)
            {
                //  transaction.Dispose();
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
                return BadRequest(ex.Message);
            }
            //    }
            //}
        }
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {

            var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();
            try
            {
                ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password);
                if (user != null)
                {
                    var roles = await userManager.GetRolesAsync(user.Id); // Get all roles of user from server
                    var role = roles.FirstOrDefault(); // Get user role

                    var IsEmployee = HttpContext.Current.Request.Headers["IsEmployee"];
                    var IsClient = HttpContext.Current.Request.Headers["IsClient"];
                    if (IsEmployee == null && role == URFXRoles.Employee.ToString())
                    {
                        context.SetError("invalid_grant", "You are not authorised to login.Please contact at [email protected]");
                        return;
                    }
                    if (IsClient == null && role == URFXRoles.Client.ToString())
                    {
                        context.SetError("invalid_grant", "You are not authorised to login.Please contact at [email protected]");
                        return;
                    }
                    if (role != null && role != URFXRoles.Employee.ToString())
                    {
                        if (user.RegistrationType == RegistrationType.Simple)
                        {
                            if (!user.EmailConfirmed)
                            {
                                context.SetError("invalid_grant", "Please confirm your email first.");
                                return;
                            }
                        }
                    }
                    if (role != URFXRoles.Client.ToString())
                    {
                        var deviceType = HttpContext.Current.Request.Headers["deviceType"];
                        var deviceToken = HttpContext.Current.Request.Headers["deviceToken"];
                        user.DeviceToken = deviceToken;
                        user.DeviceType = deviceType;
                    }



                    IdentityResult result = await UserManager.UpdateAsync(user);

                    ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager,
                       OAuthDefaults.AuthenticationType);
                    ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager,
                        CookieAuthenticationDefaults.AuthenticationType);
                    UserPlanModel userPlanModel = new UserPlanModel();
                    ServiceProviderModel serviceproviderModel = new ServiceProviderModel();
                    userPlanModel = userPlanService.GetUserPlanByUserId(user.Id);
                    if (role == URFXRoles.ServiceProvider.ToString())
                    {
                        serviceproviderModel = serviceProviderService.GetServiceProviderById(user.Id);
                    }
                    
                    AuthenticationProperties properties = null;
                    if (user.DeviceType != null && user.DeviceToken != null)
                    {
                        properties = CreateProperties(user.UserName, role, user.Id, user.DeviceType, user.DeviceToken, userPlanModel.PlanId, user.IsRegister, user.IsLogin, serviceproviderModel.ServiceProviderType);
                    }
                    else
                    {
                        properties = CreateProperties(user.UserName, role, user.Id, userPlanModel.PlanId, user.IsRegister, user.IsLogin, serviceproviderModel.ServiceProviderType);
                    }
                    AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
                    context.Validated(ticket);
                    context.Request.Context.Authentication.SignIn(cookiesIdentity);
                }
                else
                {
                    context.SetError("invalid_grant", "The user name or password is incorrect.");
                    return;
                }
            }
            catch (Exception ex)
            {
                Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
            }
        }