public bool UpdateCompany(Guid id, CompanyPostDto company)
        {
            var existCompany = Session.Query <Company>().Where(c => c.Id == id).FirstOrDefault();

            if (existCompany == null)
            {
                return(false);
            }
            try
            {
                using (var transaction = Session.BeginTransaction())
                {
                    Session.Delete(existCompany);
                    transaction.Commit();
                }
                var output = RegisterCompany(company, existCompany.AccessCode);
                return(true);
            } catch (Exception e)
            {
                using (var transaction = Session.BeginTransaction())
                {
                    Session.Save(existCompany);
                    transaction.Commit();
                    return(false);
                }
            }
        }
Exemple #2
0
        public async Task <Result <CompanyDto> > CreateCompanyAsync(CompanyPostDto company)
        {
            var result = await _companyRepository.CreateCompanyAsync(company);

            var mappedResult = new CompanyDto
            {
                Id          = result.Value.Id,
                Name        = result.Value.Name,
                PhoneNumber = result.Value.PhoneNumber,
                Address     = result.Value.Address
            };

            return(Result.Ok(mappedResult));
        }
        public IHttpActionResult Post(CompanyPostDto persons)
        {
            using (var helper = new DataBaseHelper())
            {
                var accessCode = $"{persons.Persons[0].FirstName.Substring(0, 2)}{persons.Persons[0].LastName.Substring(0, 2)}";
                while (helper.IsAccessCodeExist(accessCode))
                {
                    var random = new Random();
                    accessCode += random.Next(10);
                }
                var id     = helper.RegisterCompany(persons, accessCode);
                var emails = new List <string>();
                persons.Persons.ForEach(x => emails.Add(x.Email));
                var going = false;
                persons.Persons.ForEach(x => { if (x.Going)
                                               {
                                                   going = true;
                                               }
                                        });
                var goingTextSwe = going ? $"Vad roligt det ska bli att se {GetAckusativePronoun(persons.Persons.Count)}" : $"Vad synd att {GetPronoun(persons.Persons.Count)} inte kan komma";
                var goingTextEng = going ? "It's nice to know you'll be at the" : "Too bad too hear you cannot attend our";
                var byeTextSwe   = going ? "Vi ses på bröllopet!" : "Ha det bra!";
                var byeTextEng   = going ? "See you at the wedding!" : "Cheers!";
                using (var mailManager = new MailManager.MailManager("smtp.gmail.com", 587, _secretContainer.UserName, _secretContainer.UserName, _secretContainer.Password))
                {
                    var text = $"==> English below\n\nHej {FormatGuestList(persons.Persons)}!\n\n{goingTextSwe} " +
                               $"på vårt bröllop! Håll gärna koll på hemsidan framöver, för där kommer all nödvändig information att vara med. Tveka inte " +
                               $"att höra av {GetAckusativePronoun(persons.Persons.Count)} om det är något {GetPronoun(persons.Persons.Count)} undrar över!\n\nOm " +
                               $"{GetPronoun(persons.Persons.Count)} vill redigera {GetPossessivePronoun(persons.Persons.Count)} anmälan, kan " +
                               $"{GetPronoun(persons.Persons.Count)} göra det genom att gå in på anmälningssidan hos hemsidan och där trycka " +
                               $"\"redigera anmälning\". Där fyller {GetPronoun(persons.Persons.Count)} i koden {accessCode} och trycker enter.\n\n" +
                               $"{byeTextSwe}\n\nJohanna och Andreas\n\n\n\n\n\n\n\n\n======================\n\n\n\n\n\n\n\n\n" +
                               $"Dear {FormatGuestList(persons.Persons)},\n\n{goingTextEng} " +
                               $"wedding! Please keep an eye at the website, we will post all necessary information there. Don't hesitate to contact" +
                               $" us if there is anything that is unclear.\n\nYou can edit the registration by going to the registration page at the " +
                               $"website and select 'edit'. There you fill the code {accessCode} and press enter to edit\n\n" +
                               $"{byeTextEng}\n\nJohanna and Andreas";
                    mailManager.SendMail(emails, "Välkommen på bröllop!", text);
                    string textToUs = GenerateTextToUs(persons);

                    mailManager.SendMail(new List <string> {
                        _secretContainer.UserName
                    }, "Ny anmälan", textToUs);
                }

                return(Ok(accessCode));
            }
        }
        private string GenerateTextToUs(CompanyPostDto persons)
        {
            var guestList = "";

            foreach (var guest in persons.Persons)
            {
                guestList += $"{guest.FirstName}: \n";
                guestList += $"Kommer: ";
                guestList += guest.Going ? "Ja\n" : "Nej\n";
                guest.FoodPreferences.ForEach(f => guestList += $"{f.SwedishName} ");
                guestList += $"E-post: {guest.Email}\n";
                guestList += $"Telefon: {guest.Phone}\n\n\n";
            }

            var textToUs = $"Anmälan har kommit in\n\n Gäster: {FormatGuestList(persons.Persons)}\n\n" +
                           guestList;

            return(textToUs);
        }
Exemple #5
0
        public async Task <Result <CompanyDto> > CreateCompanyAsync(CompanyPostDto company)
        {
            var response = await _crmRetryPolicy.ExecuteAsync(() =>
                                                              HttpClient.PostAsync(ServiceNameTypes.CrmService.ToString(), _apiTargetResource, BaseUrl, new JsonContent(company)));

            if (response.IsSuccessStatusCode)
            {
                var projectsServiceResponse = await response.ReadAsAsync <CompanyDto>();

                return(Result.Ok(projectsServiceResponse));
            }

            //await HttpResponseExtensionMethods.ThrowIfClientErrorAsync(response);
            //await HttpResponseExtensionMethods.LogHttpResponseAsync(response, Logger);

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

            return(Result.Fail <CompanyDto>(errorMessage));
        }
        public IHttpActionResult Put(Guid id, CompanyPostDto company)
        {
            using (var helper = new DataBaseHelper())
            {
                bool success = helper.UpdateCompany(id, company);
                if (success)
                {
                    using (var mailManager = new MailManager.MailManager("smtp.gmail.com", 587, _secretContainer.UserName, _secretContainer.UserName, _secretContainer.Password))
                    {
                        var text = $"Hej {FormatGuestList(company.Persons)}!\n\n{GetPossessivePronoun(company.Persons.Count, true)} anmälan är uppdaterad. Vi ses på bröllopet!\n\nVarma hälsningar,\n" +
                                   $"Johanna och Andreas";
                        mailManager.SendMail(company.Persons.Select(c => c.Email), "Bröllopsanmälan är uppdaterad", text);

                        var textToUs = GenerateTextToUs(company);
                        mailManager.SendMail(new List <string> {
                            _secretContainer.UserName
                        }, "Anmälan har uppdaterats", textToUs);
                    }
                    return(Ok());
                }
                return(BadRequest());
            }
        }
        public Guid RegisterCompany(CompanyPostDto company, string accessCode)
        {
            Company newCompany = new Company();

            newCompany = new Company
            {
                Comment    = company.Comment,
                AccessCode = accessCode
            };

            using (var companyTransaction = Session.BeginTransaction())
            {
                Session.Save(newCompany);
                companyTransaction.Commit();
            }
            foreach (var person in company.Persons)
            {
                var newPerson = new Person
                {
                    FirstName       = person.FirstName,
                    LastName        = person.LastName,
                    Phone           = person.Phone,
                    Email           = person.Email,
                    FoodPreferences = new List <FoodPreference>(),
                    Going           = person.Going,
                    Company         = newCompany
                };
                if (person.FoodPreferences != null)
                {
                    foreach (var foodPreference in person.FoodPreferences)
                    {
                        Guid foodPreferenceId;
                        var  foodPreferenceQuery = Session.Query <FoodPreference>().Where(f => (f.SwedishName.ToLower() == foodPreference.SwedishName.ToLower() && !string.IsNullOrWhiteSpace(foodPreference.SwedishName)) || (f.EnglishName.ToLower() == foodPreference.EnglishName.ToLower() && !string.IsNullOrWhiteSpace(foodPreference.EnglishName)));
                        if (foodPreferenceQuery.Any())
                        {
                            foodPreferenceId = foodPreferenceQuery.First().Id;
                        }
                        else
                        {
                            var newFoodPreference = new FoodPreference {
                                SwedishName = foodPreference.SwedishName, EnglishName = foodPreference.EnglishName
                            };
                            using (var foodPreferenceTransaction = Session.BeginTransaction())
                            {
                                Session.Save(newFoodPreference);
                                foodPreferenceTransaction.Commit();
                            }
                            foodPreferenceId = newFoodPreference.Id;
                        }
                        newPerson.FoodPreferences.Add(new FoodPreference {
                            Id = foodPreferenceId
                        });
                    }
                }
                using (var personTransaction = Session.BeginTransaction())
                {
                    Session.Save(newPerson);
                    personTransaction.Commit();
                }
            }
            return(newCompany.Id);
        }
        public async Task <IActionResult> Post([FromBody] CompanyPostDto company)
        {
            var result = await _companyService.CreateCompanyAsync(company);

            return(Ok(result.Value));
        }