public async Task <GetStaffAssignmentViewModel> GetStaffAssignment(string staffId)
        {
            try
            {
                var data = (await _positionAssignRepo.StaffAssign(staffId)).OrderBy(m =>
                                                                                    m.StaffStartDate).ToList();

                dynamic currentPositionAssign       = null;
                dynamic nextPositionAssign          = null;
                dynamic followingPositionAssign     = null;
                dynamic nextFollowingPositionAssign = null;

                for (var assignobj = 0; assignobj < data.Count; assignobj++)
                {
                    switch (assignobj)

                    {
                    case 0:
                        currentPositionAssign = data[assignobj];
                        break;

                    case 1:
                        nextPositionAssign = data[assignobj];
                        break;

                    case 2:
                        followingPositionAssign = data[assignobj];
                        break;

                    case 3:
                        nextFollowingPositionAssign = data[assignobj];
                        break;
                    }
                }



                return(new GetStaffAssignmentViewModel()
                {
                    currentPositionAssign = currentPositionAssign,
                    nextPositionAssign = nextPositionAssign,
                    followingPositionAssign = followingPositionAssign,
                    nextFollowingPositionAssign = nextFollowingPositionAssign
                });
            }
            catch (Exception e)
            {
                var a = e;
                Console.Write(a);
                throw;
            }
        }
Exemple #2
0
        public async Task <string> SendMailAsync([FromBody] MailModelSelect model)
        {
            UserModel UserName = _userRepo.GetUser();

            foreach (string userid in model.StaffID)
            {
                try
                {
                    var staff = (await _positionAssignRepo.StaffAssign(userid)).OrderBy(m => m.StaffStartDate).ToList();


                    var staffOnly = _staffRepo.GetByStaffIdJoins(userid);

                    //if (staffOnly==null)
                    //{
                    //    var staffOnly2 = _staffRepo.GetByStaffId(userid);

                    //}

                    var templates = _mailRepos.GetTemplate(model.TemplateName);

                    string content1 = model.Content.Replace("/\r", "<br />");

                    string content = content1.Replace("\n", "<br />");



                    dynamic currentPositionAssign   = null;
                    dynamic nextPositionAssign      = null;
                    dynamic followingPositionAssign = null;



                    for (var assignobj = 0; assignobj < staff.Count; assignobj++)
                    {
                        switch (assignobj)

                        {
                        case 0:
                            currentPositionAssign = staff[assignobj];



                            content = content.Replace("<DESTINATION1>", currentPositionAssign.Destination);
                            content = content.Replace("<RESORT1>", currentPositionAssign.ConceptHotel);

                            content = content.Replace("<JOBTITLE1>", currentPositionAssign.JobTitle);
                            content = content.Replace("<CENTRALID>", currentPositionAssign.CentralID);

                            content = content.Replace("<ASSIGNSTARTDATE1>", currentPositionAssign.StaffStartDate.ToString("yyyy-MM-dd"));
                            content = content.Replace("<ASSIGNENDDATE1>", currentPositionAssign.StaffEndDate.ToString(("yyyy-MM-dd")));


                            break;

                        case 1:
                            nextPositionAssign = staff[assignobj];



                            content = content.Replace("<DESTINATION2>", nextPositionAssign.Destination);
                            content = content.Replace("<RESORT2>", nextPositionAssign.ConceptHotel);

                            content = content.Replace("<JOBTITLE2>", nextPositionAssign.JobTitle);


                            content = content.Replace("<ASSIGNSTARTDATE2>", nextPositionAssign.StaffStartDate.ToString(("yyyy-MM-dd")));
                            content = content.Replace("<ASSIGNENDDATE2>", nextPositionAssign.StaffEndDate.ToString(("yyyy-MM-dd")));


                            break;

                        case 2:
                            followingPositionAssign = staff[assignobj];

                            content = content.Replace("<DESTINATION3>", followingPositionAssign.Destination);
                            content = content.Replace("<RESORT3>", followingPositionAssign.ConceptHotel);

                            content = content.Replace("<JOBTITLE3>", followingPositionAssign.JobTitle);


                            content = content.Replace("<ASSIGNSTARTDATE3>", followingPositionAssign.StaffStartDate.ToString(("yyyy-MM-dd")));
                            content = content.Replace("<ASSIGNENDDATE3>", followingPositionAssign.StaffEndDate.ToString(("yyyy-MM-dd")));

                            break;
                        }
                    }

                    content = content.Replace("<FIRSTNAME>", staffOnly.FirstName);
                    content = content.Replace("<LASTNAME>", staffOnly.LastName);

                    string subject = model.Subject;


                    subject = subject.Replace("<FIRSTNAME>", staffOnly.FirstName);
                    subject = subject.Replace("<LASTNAME>", staffOnly.LastName);
                    // subject = subject.Replace("<FORMNAME>", "Staff Profil");
                    string[] email = new string[] { staffOnly.Email, staffOnly.Email };
                    List <KeyValuePair <string, string> > bodyProperties = new List <KeyValuePair <string, string> >();
                    foreach (var dir in email)
                    {
                        bodyProperties.Add(new KeyValuePair <string, string>("emailTo", dir.ToString()));
                    }



                    bodyProperties.Add(new KeyValuePair <string, string>("userAddress", model.Email));
                    bodyProperties.Add(new KeyValuePair <string, string>("subject", subject));
                    bodyProperties.Add(new KeyValuePair <string, string>("body", content));
                    bodyProperties.Add(new KeyValuePair <string, string>("isBodyHtml", "true"));
                    // subject = subject.Replace("<FORMNAME>", "Staff Profil");

                    var dataContent = new FormUrlEncodedContent(bodyProperties.ToArray());

                    var contents = new FormUrlEncodedContent(bodyProperties);

                    var response = await client.PostAsync(Config.MailApi, contents);

                    var responseString = await response.Content.ReadAsStringAsync();



                    var History = new HistoryModel();    // Add to History all actions of relevancy
                    {
                        History.StaffID = userid;

                        History.HistoryDate     = DateTime.UtcNow;
                        History.HistoryAction   = "Mail Sent using template " + model.TemplateName;
                        History.HistoryLocation = "Some Destínation";
                        History.ApplicationType = "Mail";
                        History.DateModified    = DateTime.UtcNow;
                        History.Status          = "Sent";
                        // History.StartDate = assignation.StartDate;
                        // History.Accepted = assignation.Accept;
                        //History.EndDate = assignation.EndDate;
                        History.HistoryWho = UserName.UserName;
                        //History.HistoryWho = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
                    };

                    _historyRepo.UpdateHistory(History);
                }
                catch (Exception e)
                {
                    Console.Write(e);
                    return(e.ToString());
                }
            }
            return("Ok");
        }