public ExternalBroadcastDTO ExternalJobPosting([FromBody] ExternalBroadcastDTO model)
        {
            var status = 0;


            ExternalShiftBroadcast externalBrodcaseShift = new ExternalShiftBroadcast();

            externalBrodcaseShift.Id          = Guid.NewGuid();
            externalBrodcaseShift.Description = model.Description;
            externalBrodcaseShift.Wage        = model.Wage;
            externalBrodcaseShift.Status      = ExternalShiftStatus.Pending;

            db.ExternalShiftBroadcasts.Add(externalBrodcaseShift);
            status = db.SaveChanges();

            //check if any Qualificatoin is selected.
            if (model.Qualification != null)
            {
                foreach (var item in model.Qualification)
                {
                    ExternalShiftQualification shiftQualification = new ExternalShiftQualification();
                    shiftQualification.Id = Guid.NewGuid();
                    shiftQualification.QualificationslookupQualificationId = item.ValueGuid;
                    shiftQualification.ExternalShiftBroadcastId            = externalBrodcaseShift.Id;
                    db.ExternalShiftQualifications.Add(shiftQualification);
                    db.SaveChanges();
                }
            }


            foreach (var item in model.BroadcastedOpenShiftList)
            {
                var shiftResult = db.Shifts.Where(a => a.Id == item.BroadcastedOpenShiftId).FirstOrDefault();
                shiftResult.ExternalShiftBroadcastId = externalBrodcaseShift.Id;
                db.SaveChanges();
            }

            //Check if any Skill is selected.
            if (model.Skills != null)
            {
                foreach (var item in model.Skills)
                {
                    ExternalShiftSkills skills = new ExternalShiftSkills();
                    skills.Id = Guid.NewGuid();
                    skills.ExternalShiftBroadcastId = externalBrodcaseShift.Id;
                    skills.IndustrySkillsId         = item.ValueGuid;
                    db.ExternalShiftSkills.Add(skills);
                    db.SaveChanges();
                }
            }

            ExternalBroadcastDTO externalBroadCastDTO = MapperFacade.MapperConfiguration.Map <ExternalShiftBroadcast, ExternalBroadcastDTO>(externalBrodcaseShift);

            return(externalBroadCastDTO);
        }
        public ExternalBroadcastDTO ExternalJobPosting()
        {
            ExternalBroadcastDTO getexternalBroadcast = new ExternalBroadcastDTO();

            getexternalBroadcast.Roles = db.Roles.Select(x => new DropDownDTO
            {
                ValueGuid = x.Id,
                Text      = x.Name
            }).ToList();
            getexternalBroadcast.Employees = db.Employees.Select(x => new DropDownDTO
            {
                ValueGuid = x.Id,
                Text      = x.FirstName + " " + x.LastName
            }).ToList();
            return(getexternalBroadcast);
        }
        public HttpResponseMessage MessageforExternalShift(Guid Id, ExternalBroadcastDTO model)
        {
            var ExternalshiftBroadcast = db.ExternalShiftBroadcasts.Find(Id);
            var email = HttpContext.Current.User.Identity.Name;
            //var Externalemployee = db.UserProfiles.FirstOrDefault(usr => usr.Email == email).Employees.FirstOrDefault(emp => emp.BusinessLocation.Id == ExternalshiftBroadcast.Shifts.First().InternalLocation.BusinessLocation.Id);
            var ExternalshiftRequest = db.ExternalShiftRequests.Where(a => a.ExternalShiftBroadcast.Id == Id && a.CreatedBy.Id == db.UserProfiles.FirstOrDefault(usr => usr.Email == email).Id).FirstOrDefault();

            if (ExternalshiftRequest == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "ExternalShiftRequest not found"));
            }

            ExternalshiftRequest.ExternalShiftMessage = model.EmployeeMessage;
            db.SaveChanges();

            return(Request.CreateResponse(HttpStatusCode.Created, ExternalshiftRequest.Id));
        }
        public ExternalBroadcastDTO ExternalShiftSetUp(Guid ID)
        {
            ExternalBroadcastDTO getexternalBroadcast = new ExternalBroadcastDTO();

            getexternalBroadcast.Skills = db.IndustrySkills.Where(x => x.IndustryTypesID == db.Shifts.FirstOrDefault(shft => shft.Id == ID).Roster.BusinessLocation.Business.Type.IndustryType.ID).Select(m => new DropDownDTO {
                ValueGuid = m.Id, Text = m.Name
            }).ToList();

            getexternalBroadcast.BroadcastedOpenShiftList = db.Shifts.Where(a => a.Id == ID).ToList().Select(m => new BroadcastedOpenShiftsDTO {
                Finish = m.FinishTime, Start = m.StartTime, BroadcastedOpenShiftId = ID
            }).ToList();

            getexternalBroadcast.Qualification = db.Qualificationslookups.Where(x => x.IndustryTypesID == db.Shifts.FirstOrDefault(shft => shft.Id == ID).Roster.BusinessLocation.Business.Type.IndustryType.ID).Select(x => new DropDownDTO
            {
                ValueGuid = x.QualificationId,
                Text      = x.QualificationName,
            }).ToList();


            return(getexternalBroadcast);
        }
        public ExternalBroadcastDTO EmployeeExternalShifts(Guid Id)
        {
            ExternalBroadcastDTO model = new ExternalBroadcastDTO();

            var result = db.ExternalShiftBroadcasts.Where(a => a.Id == Id).FirstOrDefault();

            model = MapperFacade.MapperConfiguration.Map <ExternalShiftBroadcast, ExternalBroadcastDTO>(result);

            model.Skills = db.ExternalShiftSkills.Where(a => a.ExternalShiftBroadcastId == Id).Select(x => new DropDownDTO
            {
                ValueGuid = x.IndustrySkill.Id,
                Text      = x.IndustrySkill.Name
            }).ToList();


            model.Qualification = db.ExternalShiftQualifications.Where(a => a.ExternalShiftBroadcastId == Id).Select(x => new DropDownDTO
            {
                Text      = x.Qualificationslookup.QualificationName,
                ValueGuid = x.Qualificationslookup.QualificationId
            }).ToList();
            return(model);
        }