public IHttpActionResult Get(int id)
        {
            CustomApplicationDbContext db        = new CustomApplicationDbContext();
            IQueryable <Lookup>        itemTypes = db.Lookups.Where(l => l.Type.Description == EnumHelper.LookupTypes.Category.ToString());
            IQueryable <Lookup>        quoteRequestStatusTypes = db.Lookups.Where(l => l.Type.Description == EnumHelper.LookupTypes.QuoteRequestStatus.ToString());
            IQueryable <Tenant>        tenants = db.Tenants.Where(t => t.Users.Where(u => u.UserName == User.Identity.Name).Any());

            Mapper.CreateMap <Tenant, TenantViewModel>();
            var listOfTenantViewModel = Mapper.Map <IEnumerable <Tenant>, IEnumerable <TenantViewModel> >(tenants.ToList());

            if (id == -1)
            {
                QuoteRequestViewModel quoteRequestTemplate = new QuoteRequestViewModel();
                quoteRequestTemplate.ItemTypes                  = itemTypes;
                quoteRequestTemplate.Tenants                    = listOfTenantViewModel;
                quoteRequestTemplate.QuoteRequestStatuses       = quoteRequestStatusTypes;
                quoteRequestTemplate.SelectedQuoteRequestStatus = quoteRequestStatusTypes.FirstOrDefault(x => x.Description == "Pending");
                return(Ok(quoteRequestTemplate));
            }
            QuoteRequest quoteRequest = QuoteRequestService.GetSingleQuote(id);

            Mapper.CreateMap <QuoteRequest, QuoteRequestViewModel>();
            QuoteRequestViewModel quoteRequestViewModel = Mapper.Map <QuoteRequestViewModel>(quoteRequest);

            quoteRequestViewModel.ItemTypes                  = itemTypes.ToList();
            quoteRequestViewModel.QuoteRequestStatuses       = quoteRequestStatusTypes.ToList();
            quoteRequestViewModel.SelectedItemType           = quoteRequest.Category;
            quoteRequestViewModel.SelectedQuoteRequestStatus = quoteRequest.QuoteRequestStatus;
            quoteRequestViewModel.Tenants         = listOfTenantViewModel;
            quoteRequestViewModel.CanChangeStatus = User.IsInRole("Admin") ? true : false;
            return(Ok(quoteRequestViewModel));
            //return Json<QuoteRequestViewModel>(quoteRequestViewModel);
        }
    private void BindPageFields()
    {
        QuoteRequestService objQuoteService      = new QuoteRequestService();
        JobDetailsService   objJobDetailsService = new JobDetailsService();

        QuoteRequest objQuoteReq = DataRepository.QuoteRequestProvider.GetByQuoteRequestId(QuoteRequestID);

        objQuoteService.DeepLoad(objQuoteReq, true, DeepLoadType.IncludeChildren
                                 , typeof(TList <JobDetails>), typeof(TList <CraQualifications>), typeof(TList <QuoteCandidates>));

        objJobDetailsService.DeepLoad(objQuoteReq.JobDetailsCollection[0], true,
                                      DeepLoadType.IncludeChildren, typeof(TList <JobDetailsStates>), typeof(TList <JobDetailsCountries>));

        JobDetails        objJobDetails = objQuoteReq.JobDetailsCollection[0];
        CraQualifications objCRAQual    = objQuoteReq.CraQualificationsCollection[0];

        txtJobDuties.Text = objJobDetails.JobDuties;
        if (objJobDetails.TentativeStartDate != null)
        {
            txtTentativeDate.Text = DateTime.Parse(objJobDetails.TentativeStartDate.ToString()).ToString("MM-dd-yyyy");
        }
        txtDurationContract.Text = objJobDetails.DurationContract;
        txtAvgDays.Text          = objJobDetails.AvgDays;

        foreach (JobDetailsCountries objJobDetailsCountries in objJobDetails.JobDetailsCountriesCollection)
        {
            lstBoxCountries.Items.FindByValue(objJobDetailsCountries.CountryId.ToString()).Selected = true;
        }

        foreach (JobDetailsStates objJobDetailsStates in objJobDetails.JobDetailsStatesCollection)
        {
            lstStates.Items.FindByValue(objJobDetailsStates.StateId.ToString()).Selected = true;
        }

        txtMinimumExp.Text        = objCRAQual.MinYearsExperience;
        txtTherapicExp.Text       = objCRAQual.ReqTherapeuticExperience;
        ddlFieldExp.SelectedValue = objCRAQual.FieldTypeExperience;
        txtPositionTitle.Text     = objCRAQual.PositionTitle;

        TList <QuoteCandidates> selectedCandidatesList = objQuoteReq.QuoteCandidatesCollection;

        //CachedCandidates = selectedCandidatesList.ToDataSet(false);
        BindCandidatesGrid();
        DataSet ds = CachedCandidates;

        foreach (QuoteCandidates qc in selectedCandidatesList)
        {
            ds.Tables[0].Rows.Find(qc.CandidateId);
            DataRow dr = ds.Tables[0].Rows.Find(qc.CandidateId);
            if (dr != null)
            {
                dr["Selected"] = true;
            }
        }
        CachedCandidates = ds;
        BindCandidatesGrid();//again bind grid
    }
        // GET: api/QuoteRequests
        public IEnumerable <QuoteRequestViewModel> Get()
        {
            IList <QuoteRequest> quoteRequests = QuoteRequestService.GetAllQuotes().OrderByDescending(x => x.QuoteRequestId)
                                                 .ToList();

            QuoteRequest recentQuoteRequest = quoteRequests.Where(x => x.CreatedDate > DateTime.Now.AddSeconds(-10)).FirstOrDefault();

            if (recentQuoteRequest != null)
            {
                recentQuoteRequest.NewQuoteRequest = true;
            }

            Mapper.CreateMap <QuoteRequest, QuoteRequestViewModel>();
            return(Mapper.Map <IList <QuoteRequest>, IList <QuoteRequestViewModel> >(quoteRequests));
        }
 public IHttpActionResult Post([FromBody] QuoteRequestViewModel value)
 {
     if (ModelState.IsValid)
     {
         Mapper.CreateMap <QuoteRequestViewModel, QuoteRequest>();
         QuoteRequest quoteRequestToCreate = Mapper.Map <QuoteRequest>(value);
         quoteRequestToCreate.TenantId             = value.SelectedTenant.TenantId;
         quoteRequestToCreate.CategoryId           = value.SelectedItemType.LookupId;
         quoteRequestToCreate.QuoteRequestStatusId = value.SelectedQuoteRequestStatus.LookupId;
         QuoteRequestService.SaveQuoteRequest(quoteRequestToCreate);
     }
     else
     {
         //IEnumerable<string> errors = ModelState.Values.SelectMany(x => x.Errors.Select(e => e.ErrorMessage));
         return(BadRequest(ModelState));
     }
     return(Ok("success"));
     //return CreatedAtRoute("DefaultApi", "success",  value);
 }
    private void AddQuoteRequest()
    {
        //Users objUser = DataRepository.UsersProvider.GetByUserId(Common.GetUserID());
        QuoteRequestService objQuoteService      = new QuoteRequestService();
        JobDetailsService   objJobDetailsService = new JobDetailsService();
        QuoteRequest        objQuoteReq          = new QuoteRequest();
        JobDetails          objJobDetails        = new JobDetails();
        CraQualifications   objCRAQual           = new CraQualifications();

        objQuoteReq.UserId = Common.GetUserID();
        //objQuoteReq.UserIdSource = objUser;

        objJobDetails.JobDuties = txtJobDuties.Text.Trim();
        if (txtTentativeDate.Text.Trim() != "")
        {
            objJobDetails.TentativeStartDate = DateTime.Parse(txtTentativeDate.Text);
        }
        objJobDetails.DurationContract = txtDurationContract.Text;
        objJobDetails.AvgDays          = txtAvgDays.Text;

        for (int i = 0; i < lstBoxCountries.Items.Count; i++)
        {
            if (lstBoxCountries.Items[i].Selected)
            {
                JobDetailsCountries objJobDetailsCountries = new JobDetailsCountries();
                objJobDetailsCountries.CountryId = int.Parse(lstBoxCountries.Items[i].Value);
                objJobDetails.JobDetailsCountriesCollection.Add(objJobDetailsCountries);
            }
        }

        for (int i = 0; i < lstStates.Items.Count; i++)
        {
            if (lstStates.Items[i].Selected)
            {
                JobDetailsStates objJobDetailsStates = new JobDetailsStates();
                objJobDetailsStates.StateId = int.Parse(lstStates.Items[i].Value);
                objJobDetails.JobDetailsStatesCollection.Add(objJobDetailsStates);
            }
        }


        objCRAQual.MinYearsExperience       = txtMinimumExp.Text;
        objCRAQual.ReqTherapeuticExperience = txtTherapicExp.Text;
        if (ddlFieldExp.SelectedIndex != 0)
        {
            objCRAQual.FieldTypeExperience = ddlFieldExp.SelectedValue;
        }
        objCRAQual.PositionTitle = txtPositionTitle.Text.Trim();

        objQuoteReq.JobDetailsCollection.Add(objJobDetails);
        objQuoteReq.CraQualificationsCollection.Add(objCRAQual);
        TList <QuoteCandidates> selectedCandidatesList = GetSelectedCandidates();

        if (selectedCandidatesList.Count > 0)
        {
            objQuoteReq.QuoteCandidatesCollection = selectedCandidatesList;
        }

        bool result = objQuoteService.DeepSave(objQuoteReq, ADB.Data.DeepSaveType.IncludeChildren,
                                               typeof(TList <JobDetails>), typeof(TList <CraQualifications>), typeof(TList <QuoteCandidates>));

        if (result)
        {
            objJobDetailsService.DeepSave(objJobDetails, DeepSaveType.IncludeChildren, typeof(TList <JobDetailsStates>), typeof(TList <JobDetailsCountries>));
        }

        //bool result = false;
        //objQuoteService.Save(objQuoteReq);
        SendEmail(objQuoteReq.QuoteRequestId.ToString());
        MultiViewQuoteRequest.ActiveViewIndex = MultiViewQuoteRequest.ActiveViewIndex + 1;

        if (result)
        {
            lblSuccessfull.Text = "Thank you for submitting your quote request.";
        }
        else
        {
            lblSuccessfull.Text = "A problem accurred while trying to save your quote request.";
        }
    }
    private void UpdateQuoteRequest()
    {
        QuoteRequestService objQuoteService      = new QuoteRequestService();
        JobDetailsService   objJobDetailsService = new JobDetailsService();

        QuoteRequest objQuoteReq = DataRepository.QuoteRequestProvider.GetByQuoteRequestId(QuoteRequestID);

        objQuoteService.DeepLoad(objQuoteReq, true, DeepLoadType.IncludeChildren
                                 , typeof(TList <JobDetails>), typeof(TList <CraQualifications>), typeof(TList <QuoteCandidates>));

        objJobDetailsService.DeepLoad(objQuoteReq.JobDetailsCollection[0], true,
                                      DeepLoadType.IncludeChildren, typeof(TList <JobDetailsStates>), typeof(TList <JobDetailsCountries>));

        JobDetails        objJobDetails = objQuoteReq.JobDetailsCollection[0];
        CraQualifications objCRAQual    = objQuoteReq.CraQualificationsCollection[0];

        objJobDetails.JobDuties = txtJobDuties.Text.Trim();
        if (txtTentativeDate.Text.Trim() != "")
        {
            objJobDetails.TentativeStartDate = DateTime.Parse(txtTentativeDate.Text);
        }
        else
        {
            objJobDetails.TentativeStartDate = null;
        }

        objJobDetails.DurationContract = txtDurationContract.Text;
        objJobDetails.AvgDays          = txtAvgDays.Text;

        objJobDetails.JobDetailsCountriesCollection.Clear();
        for (int i = 0; i < lstBoxCountries.Items.Count; i++)
        {
            if (lstBoxCountries.Items[i].Selected)
            {
                //JobDetailsCountries objJobDetailsSearched = objJobDetails.JobDetailsCountriesCollection.Find(JobDetailsCountriesColumn.CountryId, lstBoxCountries.Items[i].Value);
                //if (objJobDetailsSearched == null)
                //{
                JobDetailsCountries objJobDetailsCountries = new JobDetailsCountries();
                objJobDetailsCountries.CountryId = int.Parse(lstBoxCountries.Items[i].Value);
                objJobDetails.JobDetailsCountriesCollection.Add(objJobDetailsCountries);
                //}
            }
        }

        objJobDetails.JobDetailsStatesCollection.Clear();
        for (int i = 0; i < lstStates.Items.Count; i++)
        {
            if (lstStates.Items[i].Selected)
            {
                JobDetailsStates objJobDetailsStates = new JobDetailsStates();
                objJobDetailsStates.StateId = int.Parse(lstStates.Items[i].Value);
                objJobDetails.JobDetailsStatesCollection.Add(objJobDetailsStates);
            }
        }

        objCRAQual.MinYearsExperience       = txtMinimumExp.Text;
        objCRAQual.ReqTherapeuticExperience = txtTherapicExp.Text;
        if (ddlFieldExp.SelectedIndex != 0)
        {
            objCRAQual.FieldTypeExperience = ddlFieldExp.SelectedValue;
        }
        objCRAQual.PositionTitle = txtPositionTitle.Text.Trim();

        //objQuoteReq.JobDetailsCollection.Add(objJobDetails);
        //objQuoteReq.CraQualificationsCollection.Add(objCRAQual);

        objQuoteReq.QuoteCandidatesCollection.Clear();
        TList <QuoteCandidates> selectedCandidatesList = GetSelectedCandidates();

        if (selectedCandidatesList.Count > 0)
        {
            objQuoteReq.QuoteCandidatesCollection = selectedCandidatesList;
        }

        bool result = objQuoteService.DeepSave(objQuoteReq, ADB.Data.DeepSaveType.IncludeChildren,
                                               typeof(TList <JobDetails>), typeof(TList <CraQualifications>), typeof(TList <QuoteCandidates>));

        if (result)
        {
            objJobDetailsService.DeepSave(objJobDetails, DeepSaveType.IncludeChildren, typeof(TList <JobDetailsStates>), typeof(TList <JobDetailsCountries>));
        }

        //bool result = false;
        //objQuoteService.Save(objQuoteReq);

        MultiViewQuoteRequest.ActiveViewIndex = MultiViewQuoteRequest.ActiveViewIndex + 1;

        if (result)
        {
            lblSuccessfull.Text = "Your quote request is updated.";
        }
        else
        {
            lblSuccessfull.Text = "A problem accurred while trying to save your quote request.";
        }
    }
 public IHttpActionResult Delete(int id)
 {
     QuoteRequestService.DeleteQuoteRequest(id);
     return(Ok("success"));
 }